А как же барабасы? Если они в миди то их трогать нельзяяяяя!Всем привет.
Нужно двигать тональность всего проекта до тех пор пока вокалист не скажет - вот, это то где мой голосовой диапазон будет работать хорошо.
Для этого пишу всю гармонию синтов через midi дорожки.
Каким скриптом выделять и двигать вверх/вниз все миди партии проекта?
Возможно на вопрос уже отвечать и я все прощелкать.
почему обходя то? ) обходя материал, который не нуждается в изменении питча (эффекты, барабаны). но бывает куча материала в wav, который надо так же транспонировать.обходя вавки но это не очень удобно
local count_items = reaper.CountMediaItems(0)
if count_items ~= 0 then
local retval, set_value = reaper.GetUserInputs( "Transpose all MIDI items", 1, "Set value", 0)
if retval then
reaper.Undo_BeginBlock(1)
reaper.PreventUIRefresh(1)
for i = 0, count_items-1 do
local get_item = reaper.GetMediaItem(0, i)
local count_takes = reaper.CountTakes(get_item)
for i = 0, count_takes-1 do
local get_take = reaper.GetTake(get_item, i)
local get_midi = reaper.TakeIsMIDI(get_take)
if get_midi == true then
local _, notes = reaper.MIDI_CountEvts(get_take)
for i = 0, notes-1 do
local retval, sel, muted, startppq, endppq, chan, pitch, vel = reaper.MIDI_GetNote(get_take, i)
reaper.MIDI_SetNote(get_take, i, sel, muted, startppq, endppq, chan, pitch + set_value, vel)
end
end
end
reaper.UpdateItemInProject(get_item)
end
reaper.Undo_EndBlock("Transpose all MIDI items", -1)
reaper.PreventUIRefresh(-1)
end
end
Нет, это не апи бажит.наверное бажит API.
А лучше напрямую изменять MIDI, например как в mpl_Adjust selected notes pitch (mousewheel).luaТо есть на будущее, когда удаляешь или перемещаешь, надо делать цикл в соответствующем направлении.
У меня пишетДо любого питчтюна конечно далеко (даже до такого корявого как Reatune), но подвижки есть:
У меня пишет
mpl_PitchEditor.lua:54: attempt to concatenate a nil value (local 'name_str')
@borisuperful, удобная штука... с окном для ввода! А можно его допилить, что бы питчил только выделенные айтем(ы)?@Ga_rY, я хотел без изменения питча айтема сделать, вот
Код:local count_items = reaper.CountMediaItems(0) if count_items ~= 0 then local retval, set_value = reaper.GetUserInputs( "Transpose all MIDI items", 1, "Set value", 0) if retval then ....