Reaper: вопросы присматривающихся к этой программе (26 онлайн)

  • Автор темы Автор темы goa
  • Дата начала Дата начала
Необходимо добиться максимального легато в классическом оркестровом произведении на VST jоркестровой библиотеке. Заметил , когда MIDI ноты идут с небольшим " нахлестом" друг на друга, тогда струнные инструменты срабатывают очень плавно в переходах между нотами. Руками двигать каждую нотку делая нахлест одну над другой утомительно. Прошу посоветовать способ/скрипт что бы сразу в партии все сделать на легато и автоматизировать всю партию . Буду признателен за советы.
 
Не поможет?

Legato mode.jpg
 
  • Like
Реакции: LogicS
@nikolas_n, можно просто выделить все ноты партии и, при достаточном увеличении, потянуть правый край одной ноты вправо на нужное расстояние, можно с зажатым шифтом, если снап включен.
 
Необходимо добиться максимального легато в классическом оркестровом произведении на VST jоркестровой библиотеке. Заметил , когда MIDI ноты идут с небольшим " нахлестом" друг на друга, тогда струнные инструменты срабатывают очень плавно в переходах между нотами. Руками двигать каждую нотку делая нахлест одну над другой утомительно. Прошу посоветовать способ/скрипт что бы сразу в партии все сделать на легато и автоматизировать всю партию . Буду признателен за советы.
--[[
* ReaScript Name:Overlap Notes (legato)
* Lua script for Cockos REAPER
* Authors: Maxim Kokarev, Archie
* Authors URI: https://forum.cockos.com/member.php?u=121750 https://forum.cockos.com/member.php?u=120700
*
]]

local r = reaper

local ME = r.MIDIEditor_GetActive();
if not ME then return end;

local take = r.MIDIEditor_GetTake(ME);

r.Undo_BeginBlock();
r.PreventUIRefresh(1);

local correct
if r.GetToggleCommandStateEx(32060, 40681) == 1 then
r.MIDIEditor_LastFocused_OnCommand(40681,0) --Options: Correct overlapping notes while editing
correct = 1
end


------------------------------
------------------------------
------------------------------
local retval, notecnt, ccevtcnt, textsyxevtcnt = r.MIDI_CountEvts(take);

local tblchan={};
local tblSel={};

for i = 1, notecnt do;
local retval,selected,muted,startppqpos,endppqpos,chan,pitch,vel = r.MIDI_GetNote(take,i-1);
if selected then;
tblSel[i-1]=i-1;
tblchan[chan]=chan;
end;
end;

local tblchan2={};
for key,val in pairs(tblchan)do;
tblchan2[#tblchan2+1] = val;
end;


for i = 1, #tblchan2 do;

for key,val in pairs(tblSel)do;
local retval,selected,muted,startppqpos,endppqpos,chan,pitch,vel = r.MIDI_GetNote(take,key);
if chan ~= tblchan2 then;
r.MIDI_SetNote(take,key,false,muted,startppqpos,endppqpos,chan,pitch,vel,true);
end;
end;
------------------------------
------------------------------
------------------------------


r.MIDIEditor_OnCommand(ME,40405);--Set note ends to start of next note (legato)

------------------------------------------------unselect last one--------------------------------------------

retval, notecnt, ccevtcnt, textsyxevtcnt = r.MIDI_CountEvts( take )

note_pos = 0

for i = 0, notecnt -1 do
retval, selected, muted, startppqpos, endppqpos, chan, pitch, vel = r.MIDI_GetNote( take, i )
if selected then

if startppqpos >= note_pos then
note_pos = startppqpos
end
end
end

for i = 0, notecnt -1 do
retval, selected, muted, startppqpos, endppqpos, chan, pitch, vel = r.MIDI_GetNote( take, i )
if selected and startppqpos == note_pos then
r.MIDI_SetNote( take, i , false, muted, startppqpos, endppqpos, chan, pitch, vel, true )

end
end
------------------------------------------------end of unselect last one--------------------------------------------


---------------------------------------- overlap-----------------------------------------------

retval, notecnt, ccevtcnt, textsyxevtcnt = r.MIDI_CountEvts( take )

for i = 0, notecnt -1 do
retval, selected, muted, startppqpos, endppqpos, chan, pitch, vel = r.MIDI_GetNote( take, i )
if selected then
local retval,selected,muted,startppqpos,endppqpos,chan,pitch,vel = r.MIDI_GetNote(take,i);
r.MIDI_SetNote(take,i,selected,muted,startppqpos,endppqpos+20000,chan,pitch,vel,true);
end;
end;
r.MIDIEditor_LastFocused_OnCommand(40659,0) --Correct overlapping notes
--------------------------------------- end overlap-----------------------------------------------

------------------------------
------------------------------
------------------------------

for key,val in pairs(tblSel)do;
local retval,selected,muted,startppqpos,endppqpos,chan,pitch,vel = r.MIDI_GetNote(take,key);
r.MIDI_SetNote(take,key,true,muted,startppqpos,endppqpos,chan,pitch,vel,true);
end;
end;
------------------------------
------------------------------
------------------------------
if correct then
r.MIDIEditor_LastFocused_OnCommand(40681,0) --Options: Correct overlapping notes while editing
end

r.MIDI_Sort(take);

r.MIDIEditor_LastFocused_OnCommand(40214,0) --Unselect All
r.PreventUIRefresh(-1);
r.Undo_EndBlock("Overlap Notes (legato)",-1);
 

Сейчас просматривают