@Aleksandr Oleynik постоянно, при каждой сессии записи вокала, когда из много дублей выбирается найлучшые моменты, ну и етот скрипт можна будет применять и к гитаре и тд
а почему бы просто в настройках мыши в системе не увеличить скорость скролла?Можно ли как-то скриптом увеличить скорость прокрутки колесом мыши вверх/вниз?
Можно без скриптов и цикл-экшнов .Через через SWS-Resources.Добавляется,даже когда на треке уже есть такой же плагинвозможно добавить конкретный плагин на выделенный трек (или несколько треков).
Я не понимаю как он поможет, не понял из описания.....@Aleksandr Oleynik постоянно, при каждой сессии записи вокала, когда из много дублей выбирается найлучшые моменты, ну и етот скрипт можна будет применять и к гитаре и тд
VST(i) Plugin
<VST "VST: SomePlugin" "SomePlugin.dll" 0 "Sax offender" // Start of VST plugin data
// field 1, str, default name
// field 2, str, filename
// field 3, int, ??
// field 4, str, display name (default used if empty)
RmFkbe9e7f4CAAAAAQAAAAAAAAACAAAAAAAAAAIAAAABAAAAAAAAAA== // Binary data, leave it alone (variable number of lines)
AgAAAAAAAAAwAAAAAAAAAAAAEADvvq3eDfCt3sP1qD4zMzM/AAAAPw== //
mplZPwAAAAAAAAA/MzMzP83MzD4AAAAAAABAP1Jlc29uYW50IEZpbA== //
dGVyAA== //
> // End of VST plugin data
//=6=For Restore MIDI-Item(ONLY) Selection After Processing==//
function Restore_Item_Selection()
(
n = 0;loop(Midi,SetMediaItemSelected(Sel_Item_ID[n],1);n += 1;);
UpdateArrange();//Update After All Processing
);
//=5=Set_Root_and_Scale For EACH MIDI-ITEM==//
function Set_Root_and_Scale() // For EACH MIDI-ITEM
(
Main_OnCommand(40153, 0); // MAIN section action "open selected item in MIDI editor"
ME = MIDIEditor_GetActive();//Get Active MIDI Editor
Take = MIDIEditor_GetTake(ME);//Get opened in ME Take
MIDI_GetScale(Take,rootOut,scaleOut, #name) != 1 ? MIDIEditor_OnCommand(ME, 40757);//forcibly ativate Scale!!!
//===Set Root===//
Loop(12,
CurRoot = MIDIEditor_GetSetting_int(ME, "scale_root");//scale_root: returns 0-12 (0=C)
CurRoot != User_Root ? MIDIEditor_OnCommand(ME, 40764);//set root
);
//===Set Scale===//
Loop(15,
MIDIEditor_GetSetting_str(ME, "scale", #CurScale);//scale: returns the scale,ex. "102034050607" for a major
stricmp(#CurScale,#User_Scale) != 0 ? MIDIEditor_OnCommand(ME, 40757);//set scale
);
MIDIEditor_OnCommand(ME, 2); // ME action: "Close M-Editor"
Take == GetActiveTake(Sel_Item_ID[Midi-1]) ? Restore_Item_Selection();//Restore MIDI-Selection After last item been processed!!!
);
//=4=function "All_Scale_Root()" call func "Set_Root_and_Scale()" For EACH sel MIDI-ITEM,except 1-st==//
function All_Scale_Root()
(
n = 1;loop(Midi-1,SelectAllMediaItems(0,0);SetMediaItemSelected(Sel_Item_ID[n],1);//Select n-item by ID
Set_Root_and_Scale();//Call func "Set_Root_and_Scale()"
n += 1;);
);
//=3=function GET "User Scale-Root" for 1-st ITEM!!!==//
//====================================================//
function User_Data()//Scale & Root Note in 1-st MIDI-Editor setting
(
ME = MIDIEditor_GetActive();//Get Active MIDI Editor
ME ?
(User_Root = MIDIEditor_GetSetting_int(ME, "scale_root"); //scale_root: returns 0-12 (0=C)
MIDIEditor_GetSetting_str(ME, "scale", #User_Scale); //scale: returns the scale = #User_Scale
defer("User_Data();")) :
(Act_Scale = MIDI_GetScale(GetActiveTake(Sel_Item_ID[0]),rootOut,scaleOut, #name);
(Act_Scale && Midi-1) > 0 ? All_Scale_Root(); //Call func "All_Scale_Root()",IF ME been closed
);
);
//========================================================================//
//=1=save MIDI-Items ONLY ID-s to Array==//
Count_Sel_Items = CountSelectedMediaItems(0);//All selected,Audio and MIDI
All = 0;Midi = 0;//indexes for loop;all=Audio+MIDI,Midi=MIDI-Items ONLY!!!
loop(Count_Sel_Items,
Cur_Item_ID = GetSelectedMediaItem(0,All);
Is_MIDI = TakeIsMIDI( GetActiveTake(Cur_Item_ID) );
Is_MIDI ? (Sel_Item_ID[Midi] = GetSelectedMediaItem(0,All);Midi+=1;);//Get sel midi-items IDs to Array "Sel_Item_ID[]"
All += 1;
);//Midi = count of selected MIDI-Items
//=2=Open 1-st Item in ME for determining USER settings(Root and Scale)==//
Midi ? //if at least one MIDI-Item selected,then:
(SelectAllMediaItems(0,0);SetMediaItemSelected(Sel_Item_ID[0],1);//Select ONLY First MIDI-item by ID
Main_OnCommand(40153, 0); // MAIN section action "open selected item in MIDI editor"
User_Data(););
Main_OnCommand(40345, 0);//All-Notes-Off
Undo_BeginBlock();
//=================
GetSet_LoopTimeRange(Sel_Set,Sel_Loop,Sel_start,Sel_end,Sel_autoseek);
( Sel_end - Sel_start && CountSelectedMediaItems(0) ) ?
Main_OnCommand(40061, 0);//Split At Selection
//=================
//==1==save MIDI-Items ONLY ID-s to Array====//
Count_Sel_Items = CountSelectedMediaItems(0);//All selected,Audio and MIDI
All = 0;Midi = 0;//indexes for loop;all=Audio+MIDI,Midi=MIDI-Items ONLY!!!
loop(Count_Sel_Items,
Cur_Item_ID = GetSelectedMediaItem(0,All);
Is_MIDI = TakeIsMIDI( GetActiveTake(Cur_Item_ID) );
Is_MIDI ? (Sel_Item_ID[Midi] = GetSelectedMediaItem(0,All);Midi+=1;);//Get sel midi-items IDs to Array "Sel_Item_ID[]"
All += 1;
);//Midi = count of selected MIDI-Items
//==2==Transpose ALL MIDI-Items==//
Midi ?
(n=0;
loop(Midi,
SelectAllMediaItems(0,0);SetMediaItemSelected(Sel_Item_ID[n],1);//Select n-MIDI-item by ID
Main_OnCommand(40153, 0); // MAIN section action "open selected item in MIDI editor"
ME = MIDIEditor_GetActive();//Get Active MIDI Editor
MIDIEditor_OnCommand(ME, 40006); // ME action: "Sel all Events"
MIDIEditor_OnCommand(ME, 40177);//Up Notes +1 scale step
Main_OnCommand(40345, 0);//All-Notes-Off
MIDIEditor_OnCommand(ME, 2); // ME action: "Close MEditor"
n+=1;
);
);
//==3==Restore MIDI-Items selection==3==//
(n = 0;loop(Midi,SetMediaItemSelected(Sel_Item_ID[n],1);n += 1;););
Undo_EndBlock("~Smart-Transpoze~", 0); //Undo
Main_OnCommand(40345, 0);//All-Notes-Off
UpdateArrange();
Не понял,по поводу mouse modifiers.Второй - mouse modifiers.
Это я пробовал,нет привязки к тональности ,даже когда в миди-редакторе она установлена,транспонируется только на полутон,а не по ступеням.SWS/FNG Transpose selected MIDI Items up (down) a semitone
Непонятно расписано.Может gif скинете?1. Всё замечательно открывается и масштабируется. Но когда нажимаешь "E", чтобы всё вернуть, сначала просто закрывается inline editor и только если ещё раз нажать "E" всё откатывается к первоначальному состоянию.
Вопрос: можно ли как-то обойти эту "проблемку"? Экшн "close inline editor" не помогает (и вообще не ясно зачем он нужен, если открытие - триггер?).
А смысл? Всё равно надо будет указывать какой миди эдитор, т.е. его всё равно придётся открывать/закрывать.прямую установку настроек миди-эдитора
Я перепутал немного,есть MIDI_GetScale(MediaItem_Take take, int &rootOut, int &scaleOut, #name),считывает настройки без открытия миди-эдитора.Теперь бы MIDI_SetScale...А смысл? Всё равно надо будет указывать какой миди эдитор, т.е. его всё равно придётся открывать/закрывать.
То есть в открыть Миди-эдитор,и,активируя поочередно айтемы,транспонировать?Ваш скрипт можно немного по-другому реализовать, без открывания-закрывания, можно сделать что-то в духе: snap selected items to opened midi editor scale and root (при открытии миди редактора каждого из айтемов будут прежние настройки, но ноты будут такие какие нам нужны).
Тогда нужно в МИДИ-эдиторе сделать выделенные треки доступными для редактирования(editable),но это только руками,экшна такого нет.Но может я чего-то упустил.Может у Вас получитсяВсе выделенные разом