dima4321, я себе грубо состряпал скрипт для аранжа и кастом для эдитора. Самое главное работает! Рипер действительно гениален! Я о такой простенькой фиче в кубейсе лет десять мечтал))).@shuco, соглашусь я бы и сам сделал но в экшн нет ни одного действия , которое бы продлевало ноту например до правой границы выделения или лупа ( так можно было обозначить вручную например ту самую точку педаль of )
function do_actions_from_main_and_midi_sections()(
Main_OnCommand(40109, 0); // MAIN section action "open selected items in primeri MIDI editor"
active_MIDI_editor = MIDIEditor_GetActive(); //get MIDI editor ID
MIDIEditor_LastFocused_OnCommand(40746, 0); //Select all notes in time selection
MIDIEditor_LastFocused_OnCommand(NamedCommandLookup("_BR_ME_SAVE_CURSOR_POS_SLOT_13"), 0); // ME action: "SWS/BR: Save edit cursor position, slot 13"
MIDIEditor_OnCommand(active_MIDI_editor, 40881); // ME action: "Move cursor to end of time selection"
MIDIEditor_OnCommand(active_MIDI_editor, 40791); // ME action: "Trim right edge of note to edit cursor"
MIDIEditor_LastFocused_OnCommand(NamedCommandLookup("_RS7d3c_0e9ffdc242cf1ec9080bf27ec6722c0f926cecfb"), 0); // ME action: "Script: Delete Notes Overlaps(poly)"
MIDIEditor_LastFocused_OnCommand(NamedCommandLookup("_BR_ME_RESTORE_CURSOR_POS_SLOT_13"), 0); // ME action: "SWS/BR: Restore edit cursor position, slot 13"
MIDIEditor_OnCommand(active_MIDI_editor, 2); // ME action: "Close MEditor"
Main_OnCommand(40635, 0); // MAIN section action "Remove time selection"
);
do_actions_from_main_and_midi_sections();
Я сам его месяц только осваиваю.Но т.к. я человек совсем новенький в рипере...
Но лучше кастом собрать.function do_actions_from_main_and_midi_sections()(
active_MIDI_editor = MIDIEditor_GetActive(); //get MIDI editor ID
MIDIEditor_LastFocused_OnCommand(40746, 0); //Select all notes in time selection
MIDIEditor_LastFocused_OnCommand(NamedCommandLookup("_BR_ME_SAVE_CURSOR_POS_SLOT_13"), 0); // ME action: "SWS/BR: Save edit cursor position, slot 13"
MIDIEditor_OnCommand(active_MIDI_editor, 40881); // ME action: "Move cursor to end of time selection"
MIDIEditor_OnCommand(active_MIDI_editor, 40791); // ME action: "Trim right edge of note to edit cursor"
MIDIEditor_LastFocused_OnCommand(NamedCommandLookup("_RS7d3c_0e9ffdc242cf1ec9080bf27ec6722c0f926cecfb"), 0); // ME action: "Script: Delete Notes Overlaps(poly)"
MIDIEditor_LastFocused_OnCommand(NamedCommandLookup("_BR_ME_RESTORE_CURSOR_POS_SLOT_13"), 0); // ME action: "SWS/BR: Restore edit cursor position, slot 13"
Main_OnCommand(40635, 0); // MAIN section action "Remove time selection"
);
do_actions_from_main_and_midi_sections();
----------------------------------------------------------------------------------------
function nothing() end; function noundo() reaper.defer(nothing) end
----------------------------------------------------------------------------------------
function main()
-- locals
local sm_id, item, item_pos, take, pos, rate, _; local r = reaper
_,_,_ = r.BR_GetMouseCursorContext()
take = r.BR_GetMouseCursorContext_Take()
pos = r.BR_GetMouseCursorContext_Position()
sm_id = r.BR_GetMouseCursorContext_StretchMarker()
if not take then noundo() return end
-- remove SM
if sm_id > -1 then
r.Undo_BeginBlock()
r.DeleteTakeStretchMarkers(take, sm_id)
r.Undo_EndBlock("Remove stretch marker at mouse cursor", -1)
else
-- add SM
if r.TakeIsMIDI(take) then noundo() return end
r.Undo_BeginBlock()
item_pos = r.GetMediaItemInfo_Value(r.GetMediaItemTake_Item(take), "D_POSITION")
rate = r.GetMediaItemTakeInfo_Value(take, "D_PLAYRATE")
r.SetTakeStretchMarker(take, -1, (pos-item_pos)*rate)
r.Undo_EndBlock("Add stretch marker at mouse cursor", -1)
end
r.UpdateArrange()
end
----------------------------------------------------------------------------------------
main()
Автозум трека при выборе, прикольно достаточно
Скрипт в описании под видео
Коллеги, нигде не встретил скрипта по добавлению/удалению стретч-маркера под курсором мыши с одной и той же клавиши, написал сам.
Может, кому то тоже пригодится:
Код:---------------------------------------------------------------------------------------- function nothing() end; function noundo() reaper.defer(nothing) end ---------------------------------------------------------------------------------------- function main() -- locals local sm_id, item, item_pos, take, pos, rate, _; local r = reaper _,_,_ = r.BR_GetMouseCursorContext() take = r.BR_GetMouseCursorContext_Take() pos = r.BR_GetMouseCursorContext_Position() sm_id = r.BR_GetMouseCursorContext_StretchMarker() if not take then noundo() return end -- remove SM if sm_id > -1 then r.Undo_BeginBlock() r.DeleteTakeStretchMarkers(take, sm_id) r.Undo_EndBlock("Remove stretch marker at mouse cursor", -1) else -- add SM if r.TakeIsMIDI(take) then noundo() return end r.Undo_BeginBlock() item_pos = r.GetMediaItemInfo_Value(r.GetMediaItemTake_Item(take), "D_POSITION") rate = r.GetMediaItemTakeInfo_Value(take, "D_PLAYRATE") r.SetTakeStretchMarker(take, -1, (pos-item_pos)*rate) r.Undo_EndBlock("Add stretch marker at mouse cursor", -1) end r.UpdateArrange() end ---------------------------------------------------------------------------------------- main()
а можно версию с привязкой к сетке? и чтоб swing соблюдала?
спс
Archie_Item; Add Remove stretch marker under mouse cursor.lua |
Archie_Item; Add Remove stretch marker to nearest grid under mouse cursor.lua |
Archie_Item; Add Remove stretch marker under mouse cursor and snap to nearest grid.lua |
Archie_Item; Add-Remove stretch marker under mouse cursor and snap to previous grid.lua |
Archie_Item; Add Remove stretch marker under mouse cursor and snap to next grid.lua |
Archie_Item; Add Remove stretch marker under mouse cursor.lua Archie_Item; Add Remove stretch marker to nearest grid under mouse cursor.lua Archie_Item; Add Remove stretch marker under mouse cursor and snap to nearest grid.lua Archie_Item; Add-Remove stretch marker under mouse cursor and snap to previous grid.lua Archie_Item; Add Remove stretch marker under mouse cursor and snap to next grid.lua
Item: Add stretch marker at cursor@Archchie а как сделать чтобы марекры выставлялись по edit cursor ? (toogle, поставить-удалить)
Item: Remove stretch marker at current position@Archchie Item: Add stretch marker at cursor ставит маркер, хотелось бы чтобы при повторном нажатии удалял маркер.
Add stretch marker@Archchie я в курсе, а как сделать на jдну клавишу, toogle?
@vax, Не понял. Там же не куда не сдвигается edit cursor.
У меня никуда курсор не двигается, вот гифкогда твой скрипт или старые скрипты по добавлению стретч маркера и квантайзу - курсор двигается к тому месту, куда stretch marker привязывается.