Помогите создать экшн / кастом экшн / скрипт

  • Автор темы Автор темы @Michael
  • Дата начала Дата начала
@Aleksandr Oleynik постоянно, при каждой сессии записи вокала, когда из много дублей выбирается найлучшые моменты, ну и етот скрипт можна будет применять и к гитаре и тд
 
  • Like
Реакции: RJ Baker
Приветствую! Можно ли как-то скриптом увеличить скорость прокрутки колесом мыши вверх/вниз? У меня колесо листает треки вверх/вниз.
 
возможно добавить конкретный плагин на выделенный трек (или несколько треков).
Можно без скриптов и цикл-экшнов .Через через SWS-Resources.Добавляется,даже когда на треке уже есть такой же плагин
 
  • Like
Реакции: fruitcore
@Aleksandr Oleynik постоянно, при каждой сессии записи вокала, когда из много дублей выбирается найлучшые моменты, ну и етот скрипт можна будет применять и к гитаре и тд
Я не понимаю как он поможет, не понял из описания.....
Может вы мультик сделаете того, что хотите автоматизировать - проделывая всё ручками?
Ну и @@Michael правильно написал - для работы с дублями в Рипере есть механизм Тэйков - который и следует использовать.... А вот для некоторых более удобных манипуляций с Тейками - где-то выкладывали Кастом Экшин ...., дигидон кажется.
Вот, Glue Takes -
http://rmmedia.ru/threads/107757/page-2#post-1870549
Все прочие манипуляции с тейками делаются стандартным инструментарием - вам с ним нужно просто разобраться.
 
Последнее редактирование:
Ну всё верно. Файл чейна по сути - код плагина. В Lua его можно добавить напрямую с помощью SetTrackStateChunk. А вот как его закодировать собственно или как-то ещё получить без сохранения цепи - неизвестно.
Wiki гласит:
PHP:
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
Можно попробовать и без бинарного кода обойтись, надо поэкспериментировать))
UPD Не, Рипер очень суров к форматированию бинарного кода, надо это очень тонко учитывать, плюс потом Reaper сам генерирует FXGUID, автоматом создаёт чейн + параметры чейна. Из 10 тестов в двух плагин успешно добавился, в остальных либо криво форматируется имя, либо плагин находится, но его конфигурация теряется на полпути. Ну и вообще не очень-то разумно лезть в файл проекта, не зная, как он строился.
 
Последнее редактирование:
В общем та тема видать затухла да и половина ссылок не пашут,в связи с этим имею смелость попросить о таком экшене как в этом посте:
http://rmmedia.ru/threads/107757/#post-1690277

А то ещё мой скил не достаточно прокачен для такого:)
 
Скрывать опасно, на мой взгляд. Вылезет что-нибудь где-нибудь - будешь сто лет искать где, пока не окажется, что ты это что-то скрыл.
Уж лучше Track: Cycle folder collapsed state.
 
Так конечно не комильфо...громоздко
А других вариантов нету?
Снимок.PNG
 
LilColt, открываешь .reaperthemezip / rtconfig.txt и меняешь все tcp_heights 10 (скорее всего, судя по скрину) на tcp_heights 5 (пять - это высота суперсжатого состояния дочек в пикселях)
 
Последнее редактирование:
  • Like
Реакции: LilColt
Как я понимаю линии просто тоньше станут в 2 раза?
Это всё равно не то:)
Ладно смирюсь,попривыкну думаю.
 
Иногда голова работой забита,которую нужно сделать в сроки,и кастомизация рипера отходит на 2ой план.
Помогли и хорошо,язвить только вот не нужно.
 
  • Like
Реакции: Andrey Marchenko
@@Michael, подскажите,как работает PreventUIRefresh.В общем,нужно отключить обновление интерфейса на время выполнения скрипта,ставлю PreventUIRefresh(1),в конце PreventUIRefresh(-1),по аналогии с чужими скриптами.Не помогает.Что означает число в скобках и как этим PreventUIRefresh правильно пользоваться?
 
@@Michael, Есть несколько скриптов,пока для эксперимента.
Один устанавливает тональность и лад для всех выделенных МИДИ-айтемов по первому айтему(образцу).То есть,устанавливаем вручную для первого айтем(в первом открывшемся после запуска скрипта МИДИ-эдиторе),а для остальных те же данные устанавливаются автоматически сразу после закрытия окна МИДИ-эдитора.
PHP:
 //=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
Другие-транспонируют все выделенные МИДИ-айтемы(или выделение,если есть) на ступень выше-ниже(в примере +1 ступень)
PHP:
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();
Таким образом,можно легко менять аккорды в композиции без массы лишних действий на всех МИДИ-дорожках сразу парой щелчков.
При выполнении скриптов много раза открывается- закрывается миди-эдитор(в зависимости от кол-ва выделенных айтемов),другого простого способа установить тональность,лад и транспонировать ноты по ступеням я не нашел.
Хотел избавиться от этого эффекта мигания,чисто для эстетики,сейчас понял,что PreventUIRefresh тут вряд ли поможет.Есть ли еще варианты?
 
Нужно с учетом тональности и лада.У меня и сейчас все работает как задумывалось,проблем вроде нет,только как-то неуклюже скрипты построены,не напрямую,а через постоянное автоматическое открытие-закрытие миди-редактора.Пока не вижу других простых средств.Вот так работает на данный момент-
1.gif
 
Так, ну насчёт транспонирования - можно конечно прогнать get/set note через все выделенные тейки, но есть SWS/FNG Transpose selected MIDI Items up (down) a semitone.

Насчёт "менять аккорды" вариант такой:
1) открыть миди эдитор
2) привязать все ноты выделенных тейков к scale/root данного MIDI Editor

Правильно я понял?
 
Последнее редактирование:
Друзья, всем привет. Требуется небольшая помощь с CA.
Задачка:
1. Выделил item или item'ы на одном или разных каналах, не важно.
2. Нажал на "E" (по умолчанию inline editor).
3. Выделенный item(ы) масштабируются на весь рабочий экран, всё остальное скрывается, во всех item'ах открываются inline editor'ы.
4. Вношу быстрые правки, опять нажимаю "E" - всё возвращается к первоначальному виду.

Я всё реализовал, всё, как будто, работает :-) Но есть одно "НО". Открытие inline editor - это триггер. И экшн отрабатывает некорректно. Работает так:
1. Всё замечательно открывается и масштабируется. Но когда нажимаешь "E", чтобы всё вернуть, сначала просто закрывается inline editor и только если ещё раз нажать "E" всё откатывается к первоначальному состоянию.
Вопрос: можно ли как-то обойти эту "проблемку"? Экшн "close inline editor" не помогает (и вообще не ясно зачем он нужен, если открытие - триггер?).
 
SWS/FNG Transpose selected MIDI Items up (down) a semitone
Это я пробовал,нет привязки к тональности ,даже когда в миди-редакторе она установлена,транспонируется только на полутон,а не по ступеням.
У меня 1-ый скрипт задает тональность и лад для всех выделенных айтемов на любых треках,2-ой транспонирует по ступеням лада(по "разрешенным" нотам) участки выделенных айтемов,то есть по допустимым аккордам в заданной тональности.Короче,задача полностью решена.
Единственное,мне не нравится сам подход,но это ладно.Может добавят в API прямую установку настроек миди-эдитора,будет уже красивее,1-ый скрипт тогда уложится в несколько строк.
[DOUBLEPOST=1440081929,1440081549][/DOUBLEPOST]
1. Всё замечательно открывается и масштабируется. Но когда нажимаешь "E", чтобы всё вернуть, сначала просто закрывается inline editor и только если ещё раз нажать "E" всё откатывается к первоначальному состоянию.
Вопрос: можно ли как-то обойти эту "проблемку"? Экшн "close inline editor" не помогает (и вообще не ясно зачем он нужен, если открытие - триггер?).
Непонятно расписано.Может gif скинете?
 
прямую установку настроек миди-эдитора
А смысл? Всё равно надо будет указывать какой миди эдитор, т.е. его всё равно придётся открывать/закрывать.

Ваш скрипт можно немного по-другому реализовать, без открывания-закрывания, можно сделать что-то в духе: snap selected items notes to opened midi editor scale and root (при открытии миди редактора каждого из айтемов будут прежние настройки, но ноты будут такие какие нам нужны).
 
Последнее редактирование:
@Vet, работает вроде,как и описано
А смысл? Всё равно надо будет указывать какой миди эдитор, т.е. его всё равно придётся открывать/закрывать.
Я перепутал немного,есть MIDI_GetScale(MediaItem_Take take, int &rootOut, int &scaleOut, #name),считывает настройки без открытия миди-эдитора.Теперь бы MIDI_SetScale...
Ваш скрипт можно немного по-другому реализовать, без открывания-закрывания, можно сделать что-то в духе: snap selected items to opened midi editor scale and root (при открытии миди редактора каждого из айтемов будут прежние настройки, но ноты будут такие какие нам нужны).
То есть в открыть Миди-эдитор,и,активируя поочередно айтемы,транспонировать?
 
Зачем поочерёдно. Все выделенные разом. Как до компьютера доберусь, нарисую.
SetScale я сделал (см ссылку на пост на оффоруме) прямым редактированием параметров тейка, миди редактор почему-то игнорит эту строку. А я предлагаю сейчас по сути переписать в скрипте экшн Force selected notes into snap scale, который на данный момент работает только из под миди редактора.
 
Последнее редактирование:
  • Like
Реакции: EUGEN27771
Все выделенные разом
Тогда нужно в МИДИ-эдиторе сделать выделенные треки доступными для редактирования(editable),но это только руками,экшна такого нет.Но может я чего-то упустил.Может у Вас получится
 
@EUGEN27771, Ммм...т.е., у вас всё получается в 2 нажатия? У меня в 3.
 

Вложения

  • inline_editor_CA.gif
    inline_editor_CA.gif
    576,9 KB · Просмотры: 141

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