С опр. набором условий - можно. Уверен на 100%, что через какое-то время вопрос будет не смешным, а реальным.Новое
А можно скриптами миди треки писать. Запустил скрипт, он фанеру написал и инструменты выбрал и всё - можно петь!
Это я знаю, Скриптом как получить?Так ведь прямо в экшн листе@Archchie,
А по какому признаку вы хотите его получать и зачем?Это я знаю, Скриптом как получить?
function GetScriptNameByID(ID)
  local fp, cont = reaper.GetResourcePath()..'/reaper-kb.ini'
  local f = io.open(fp, 'a+')
  if not f then return else cont = f:read('a') f:close() end
  return cont:match(ID:match('[%a%d]+')..'%s"(.-)".-\n')
end
scriptname = GetScriptNameByID('_RS5a9b832ada3f7ee194cb55a9e2e504626cd6a546')
	function GetIDByScriptName(scriptname)
  local fp, cont = reaper.GetResourcePath()..'/reaper-kb.ini'
  local f = io.open(fp, 'a+')
  if not f then return else cont = f:read('a') f:close() end
  scriptname = scriptname:gsub('Script:%s' ,''):gsub("[%(%)%.%%%+%-%*%?%[%]%^%$]", function(c) return "%" .. c end)
  for line in cont:gmatch('[^\r\n]+') do if line:match(scriptname) then return line:match('RS[%a%d]+') end end
end
ID = GetIDByScriptName('Script: Argitoth_Select items with color of selected items.eel')
	if update_gfx then -- cначала определяем триггер, по которому в какой-либо из буферов будет писаться графика
    gfx.dest = 1 -- номер буфера 1..32 (кажется)
    gfx.setimgdim(1, -1, -1) -- этим я сбрасываю графику внутри этого буфера, иначе она будет писаться поверх того, что уже есть
    gfx.setimgdim(1, w, h) -- определяем размеры записываемой графики
    gfx.a = 1
    gfx.rect(0,0, w,h) -- рисуем что требуется
end
gfx.dest = -1  -- -1 - это основной слой
gfx.a = 1 -- альфа для буферов
gfx.blit(1, 1, 0, -- этим вытаскиваем первый буфер и сразу его переворачиваем/обрезаем/сжимаем при необходимости
          0,0,w,h,
          0,0,w,h,0,0)
	function msg(m)
  reaper.ShowConsoleMsg(tostring(m) .. "\n")
end
on=0
move=0
function main()
state =  reaper.JS_Mouse_GetState(1) 
if state > 0 then
if on==0 then x = reaper.GetMousePosition() end
x1 = reaper.GetMousePosition()
on=1
diff = (x1-x)*0.01
msg(diff)
--reaper.Main_OnCommand(1012, 0)
else
on=0
end
reaper.defer(main)
end
main()
	и что бы когда мышка остановилась то остановить зум. И если опять начала движение не отпуская конопки то возбновить зум.
function msg(m)
  reaper.ShowConsoleMsg(tostring(m) .. "\n")
end
on=0
move=0
function main()
if not bla then bla = 0 end 
if not diff then diff = 0 end
state =  reaper.JS_Mouse_GetState(1) 
if state > 0 then
if on==0 then x = reaper.GetMousePosition() end
x1 = reaper.GetMousePosition()
on=1
diff = (x1-x)*0.01
msg(diff)
if diff ~= bla then
   
    midieditor = reaper.MIDIEditor_GetActive()
    if diff < bla then
        --reaper.Main_OnCommand(1011, 0)
        reaper.MIDIEditor_OnCommand( midieditor,1011)
    else
        --reaper.Main_OnCommand(1012, 0)
        reaper.MIDIEditor_OnCommand( midieditor,1012)
    end   
bla = diff
end
else
on=0
diff=0
bla=0
end
reaper.defer(main)
end
main()