а вот это да, жесть) учтуА вот здесь ты не пробовал добавлять на трек input FX и айтемы с FX, фризить трек и т.п?
а вот это да, жесть) учтуА вот здесь ты не пробовал добавлять на трек input FX и айтемы с FX, фризить трек и т.п?
function ExtractBrackets(str)
local s, other, f = '',''
local count = 1
for line in str:gmatch('[^\n]+') do
if not f then
s = s..'\n'..line
if line:sub(1,1) == '<' then count = count +1 end
if line:sub(1,1) == '>' then count = count -1 end
if count == 0 then f = 1 end
else other = other..'\n'..line end
end
if s:sub(-1) == '>' then s = s:sub(1,-2) other = '>'..other end
return s, other
end
function get_tr_fx_chain(tr,chunk)
if chunk:match'\n<FXCHAIN\n' then
local a,b,c
a,b = chunk:match'(.-\n<FXCHAIN\n)(.*)'
b,c = ExtractBrackets(b)
return a,b,c
end
end
function add_tr_fx_chain(tr, chunk, new_chain, replace7)
local fx = r.TrackFX_GetCount(tr)
local fx_chain
a,b,c = get_tr_fx_chain(tr,chunk)
if b then
if replace7 and replace7~=0 then
chunk = a..new_chain..'\n'..c
else
chunk = a..b..new_chain..'\n'..c
end
else
local a,b,c
a, c = chunk:match'(.-\nMAINSEND.-\n)(.*)'
b = '<FXCHAIN\n'..new_chain..'\n>\n'
chunk = a..b..c
end
SetTrackChunk(tr, chunk)
end
https://www.cockos.com/oscii-bot/Подскажите, коллеги, в какую сторону смотреть для решения следующей задачи: миди сообщения SysEx нужно передать по OSC, в сообщениях содержится массив 8ми битных чисел, т.е. это не команды, мне числа и нужны. Все это надо в потоке. Или скриты для этого не подойдут, они все больше по оффлайн операциям?
посмотрю, спасибоесть замечательный Эдитор
import speech_recognition as sr
import os
import datetime
class Speech_AI:
def __init__(self):
self._recognizer = sr.Recognizer()
self._microphone = sr.Microphone()
now_time = datetime.datetime.now()
self._mp3_name = now_time.strftime("%d%m%Y%I%M%S")+".mp3"
self._mp3_nameold='111'
def work(self):
with self._microphone as source:
self._recognizer.adjust_for_ambient_noise(source)
try:
while True:
with self._microphone as source:
audio = self._recognizer.listen(source)
try:
statement = self._recognizer.recognize_google(audio, language="ru_RU")
statement=statement.lower()
print(format(statement))
except sr.UnknownValueError:
a = 1
except sr.RequestError as e:
a = 1
except KeyboardInterrupt:
self._clean_up()
def _clean_up(self):
def clean_up():
os.remove(self._mp3_name)
def main():
ai = Speech_AI()
ai.work()
main()
А кириллица не может быть виной? Вообще можно написать на оф.форуме - там больше знатоков.Есть идеи?
--[[
В cp1251 русские буквы А-Яа-я (без буквы Ёё) занимают диапазон ASCII кодов 192-255 (0xC0-0xFF)
а в юникоде - 1040-1104 (0x0410-0x044F).
Разница как раз 848.
--]]
--------------------
str_tb = {}
local c_pos = 0
----------------------------------------
gfx.clear = 0
--gfx.setfont(1,"Tahoma",22)
gfx.init("Test", 500,300,0,200,200)
--------------------
function minmax(x, minv, maxv)
return math.min(math.max(x, minv),maxv)
end
----------------------------------------
function DrawText(str_tb)
gfx.set(1)
gfx.setfont(1, 'Verdana',16)
------------------
gfx.x, gfx.y = 10, 0
gfx.drawstr("last char: ")
gfx.drawnumber(last_char, 0)
------------------
local s_x, s_y = 10, 20
gfx.x, gfx.y = s_x, s_y
if c_pos == 0 then gfx.line(gfx.x, gfx.y, gfx.x, gfx.y + gfx.texth) end
------------------
for i = 1, #str_tb do
local c = str_tb[i]
if c == 13 then
gfx.x, gfx.y = s_x, gfx.y + gfx.texth -- next line
else
gfx.drawchar(c)
end
if i == c_pos then gfx.line(gfx.x, gfx.y, gfx.x, gfx.y + gfx.texth) end -- cursor
end
end
----------------------------------------
function mainloop()
mouse_down = gfx.mouse_cap&1 == 1 and mouse_last_cap&1 == 0
mouse_last_cap = gfx.mouse_cap
char = gfx.getchar()
if char > 0 then last_char = char end -- For Test!
if char == 13 then table.insert(str_tb, c_pos+1, char); c_pos = c_pos+1 end
if char > 31 and char < 127 then table.insert(str_tb, c_pos+1, char); c_pos = c_pos+1 end
if char > 127 and char < 256 then table.insert(str_tb, c_pos+1, 848 + char); c_pos = c_pos+1 end
---------------
if char == 8 and c_pos > 0 then table.remove(str_tb, c_pos); c_pos = c_pos-1 end
if char == 1818584692 then c_pos = minmax(c_pos-1, 0, #str_tb) end
if char == 1919379572 then c_pos = minmax(c_pos+1, 0, #str_tb) end
DrawText(str_tb)
---------------
if char~=-1 then reaper.defer(mainloop) end --defer
gfx.update();
end
mainloop()
if char > 127 and char < 256 then
if char == 184 then
table.insert(str_tb, c_pos+1, 1105)
elseif char == 168 then
table.insert(str_tb, c_pos+1, 1025)
else
table.insert(str_tb, c_pos+1, 848 + char)
end
c_pos = c_pos+1
end