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

  • Автор темы Автор темы @Michael
  • Дата начала Дата начала

Насколько понял, это либо глюк, либо фича, при которой в данном случае экшен, назначающий вход, работает только для треков с input: midi, либо input: none. Как вариант можно установить all midi по умолчанию для всех треков; в случаях же когда понадобится input mono или input stereo, использовать какую-нибудь костыльку с использованием напр, экшена set all selected track inputs to match first selected tracks
[DOUBLEPOST=1447145312,1447117297][/DOUBLEPOST]________________________________________________________________
Интересно, можно ли как-то ухитриться и сделать в Cycle Actions цикл while? Чтоб экшен А работал до тех пор, пока Б находится в состоянии вкл?
 
Я так понимаю нету решения?
@LilColt, замените пятую строчку в вашем цикл-экшне на CONSOLE i0m, всё будет работать.
Console.jpg
Экшн, который вы используете в пятой строчке, не выбирает в качестве источника записи миди-вход. Он просто включает омни режим для миди входа.
 
ребят,подскажите экшн,или кастом экшн для рендеринга access virus ti,подключенного через virus control в один щелчек??или может скрипт есть?
 
Последнее редактирование:
  • Like
Реакции: LilColt и lil-burn
Я понимаю, что этот вариант через задницу, но пока скрипт не умеет принимать и передавать миди, а JS умеет, при этом скрипт умеет считывать с JS и передавать в JS параметры, нужно не в JS buf[0.....n] писать входное миди сообщение, а через считывание в риал тайпе параметров JS-а писать их в скрипт
Прошу прощения,что выпал из темы на время.Я понимаю,о чем речь,самих параметров было бы достаточно и 5-ти - текущая позиция,и текущее сообщение-(offset,msg1,msg2,msg3).Но...есть много вопросов.Скорее всего,скрипт просто физичечки не успеет считать,например аккорд,или несколько контроллеров и т.п.Тем более с точностью до сэмпла.Надо,конечно,попробавать,но я почти уверен.

Возможность есть (это base64). Но это не данные из скрипта.
Это из JS-плагина,в JS есть возможность записать(и прчитать) данные в файл проекта.
Скрипт же,если это возможно,должен прочитать данные,расшифровать и вставить ноты в проект,согласно этим данным.Но как вижу,задача не простая.
 
Прошу прощения,что выпал из темы на время.Я понимаю,о чем речь,самих параметров было бы достаточно и 5-ти - текущая позиция,и текущее сообщение-(offset,msg1,msg2,msg3).Но...есть много вопросов.Скорее всего,скрипт просто физичечки не успеет считать,например аккорд,или несколько контроллеров и т.п.Тем более с точностью до сэмпла.Надо,конечно,попробавать,но я почти уверен.
Я бы попробовал. У меня скрипт и не с таким справляется.
Есть ещё один экстравагантный вариант забабахать эту штуковину -
OSCII-bot
Это по сути утилита в которую грузится скрипт с синтаксисом очень близким к JS, только с ограничениями, и умеющий в Риал тайме делать любую логику и трансформацию с midi и osc сообщениями.
Вот документация по нему -
OSCII-bot code reference
Теоретически midi партию постоянно можно писать в него и чё-то потом с ней делать. Но это так - прикидка только.
 
  • Like
Реакции: EUGEN27771
Я бы попробовал. У меня скрипт и не с таким справляется.
То есть читает параметры в реальном времени?Интересно.
Есть ещё один экстравагантный вариант забабахать эту штуковину
Ну это,потом можно глянуть,опять же,лишняя приблуда.Но,смотрю, она вроде в файл данные может писать?...
 
То есть читает параметры в реальном времени?Интересно.
Читает. По сути у меня скрипт висит в фоне и моментально реагирует на изменение каких то параметров и по этим событиям меняет другие параметры в других FX-ах.
Так что - всё же попробуй.
Ну это,потом можно глянуть,опять же,лишняя приблуда.Но,смотрю, она вроде в файл данные может писать?...
Я не пробовал, но по ходу это некий симбиоз JS и Скрипта.
 
  • Like
Реакции: EUGEN27771
@Aleksandr Oleynik,в итоге появилась такая идея,что необязательно же читать параметры в скрипт в реальном времени.Можно считать сохраненные параметры потом!
1)Пускай JS в реалтайме читает и складывает в массив номер события,позицию,offset,msg1,msg2,msg3.Это уже есть и работает почти идеально,с точностью до семпла.
В JS только нужно связать внутри соотв. номер события,позицию,offset,msg1,msg2,msg3 и вывести на слайдеры.
2)Скрипт при запуске сначала изменяет параметр JS(номер события) и,соответсвенно,в JS,изменяются связанные с ним позиция,offset,msg1,msg2,msg3.
Далее скрипт считывает их,добавляет событие на указанный трек в соотв. позиции и переходит к следующему номеру.
Таким образом,никакие события не потеряются.Конечно,нужно продумать все,но это уже очень реально.
 
@EUGEN27771, не до конца понял.
Т.е. JS запишит каждое миди сообщение в риал тайме в отдельную ячейку памяти - номер события.
При запуске скрипта, уже не в риал тайме (а, кстати думаю, что быстрее риал тайма) скрипт последовательно меняет значение номера ячейки памяти (номера события), который привязан к параметру (слайдеру). JS по этому изменению ячейки памяти (номеру события) меняет привязанные к msg1, msg2, msg3 параметры (слайдеры) - которые собственно и считывает скрипт.
Так?
 
@Aleksandr Oleynik, да,абсолютно правильно.
При запуске скрипта, уже не в риал тайме (а, кстати думаю, что быстрее риал тайма)
Да,можно сказать моментально.
Но только все равно есть определенная,но уже вполне решаемая проблема,перевести параметры на язык скрипта,там же указываются для ноты,например,длина,а не последовательно note on-note off и т.п.
 
@Aleksandr Oleynik
Но только все равно есть определенная,но уже вполне решаемая проблема,перевести параметры на язык скрипта,там же указываются для ноты,например,длина,а не последовательно note on-note off и т.п.
Я с этим вообще не имел дело... :(
 
@Aleksandr Oleynik,ну,я попробую сделать,возможно не так скоро.В принципе,мне,например, ретроспектив-рекорд,не то что бы по зарез нужен,еще и с костылями,просто спортивный интерес.
 
@EUGEN27771, так тут 90% скриптов делаются больше из "спортивного интереса", чем из-за нужды :)
Но ретроспектив-рекордс уже прям НУЖНО СДЕЛАТЬ :)
 
там же указываются для ноты,например,длина,а не последовательно note on-note off
НМВ как раз таки нужно оперировать последовательностью note on - note off. Это соврешенно два разных события и SMF воспринимает их именно так. Одним словом JSFX по идее должен отвечать за захват миди информации и генерацию SMF по событию из скрипта. как вариант один из неиспользуемых контроллеров или вообще SYSEX. А скрипт должен сгенерировать событие для JSFX и потом импортнуть SMF. Вот и вся логика. Осталось разобраться с синтаксисом SMF.
 
  • Like
Реакции: EUGEN27771
@belovw, да если удастся сразу получить SMF,это упростит задачу.
Но если не получится,все равно не проблема.Можно выделить еще в JS в отдельную категорию note-on и note-off.Остальные же идут просто по одной штуке.с ними проблем не будет.
===
Не так все просто с SMF.
===
Оставить толькo шапку и Track Events - <midi-event>?
<v_time> - в чем измеряется - в тиках?
===
Как это файл просмотреть вообще,в таком виде,как в документации,или как свой создать вручную для эксперимента?
 
Последнее редактирование:
SMF и есть миди файл который можно будет импортировать в проект с помощью скриптпа, как импортировать не знаю. Надо разбираться.
C: bool BR_SetTakeSourceFromFile(MediaItem_Take* take, const char* filenameIn, bool inProjectData)
EEL: bool extension_api("BR_SetTakeSourceFromFile", MediaItem_Take take, "filenameIn", bool inProjectData)
Lua: boolean reaper.BR_SetTakeSourceFromFile(MediaItem_Take take, string filenameIn, boolean inProjectData)
Python: Boolean BR_SetTakeSourceFromFile(MediaItem_Take take, String filenameIn, Boolean inProjectData)[BR] Set new take source from file. To import MIDI file as in-project source data pass inProjectData=true. Returns false if failed.
Any take source properties from the previous source will be lost - to preserve them, see BR_SetTakeSourceFromFile2.
Note: To set source from existing take, see SNM_GetSetSourceState2.

Можно выделить еще в JS в отдельную категорию note-on и note-off.
Они и так идут как отдельные события.

Оставить толькo шапку и Track Events - <midi-event>?
возможно

<v_time> - в чем измеряется - в тиках?
в дельта PPQ
The PPQ (parts per quarter note) value used to
calculate the time differences.
Обычно PPQ=480

Много интересного
http://www.music.mcgill.ca/~ich/classes/mumt306/StandardMIDIfileformat.html
http://acad.carleton.edu/courses/musc108-00-f14/pages/04/04StandardMIDIFiles.html
http://www.ccarh.org/courses/253/handout/smf/
 
  • Like
Реакции: EUGEN27771
Они и так идут как отдельные события.
Я понимаю,что в JS и так идет все последовательно.Имелось ввиду их(ноты) выделить в отдельную часть кода,ибо из скрипта потом ноту без конечной позиции не вставить,а вот остальным миди-сообщениям это не нужно.Это если НЕ ДЕЛАТЬ SMF-файл,а по отдельности читать и вставлять,чтобы скрипту проще было ноты отдельно просчитать.
===
The PPQ (parts per quarter note) value used to
calculate the time differences
это понятно,у нас "тиками"(в русскоязычной литературе) их называют.В рипере по умолчанию 960,вроде бы,а может я поменял.
Много интересного
Спасибо,буду изучать,по-любому пригодится,но видно создать такой файл будет непросто.С самими сообщениями все понятно.Но все это должно быть абсолютно без ошибок.
===
Ну и,наполедок проблема.Из скрипта пока нельзя создать абсолютно любой файл.
В файле должны быть "sectionName"-в квадр. скобках и "keyName"-имя параметра ="value".И
они никак не сходятся с форматом SMF.И на радости никто не вспомнил про это.
 
Начиная отсюда об извлечении hex из midi бинарника, не стал углубляться в эту тему, т.к. лично мне это не нужно.


Из скрипта пока нельзя создать абсолютно любой файл
Код:
file = io.open(path, "w")
В EEL тоже можно, правда не помню как.
 
  • Like
Реакции: EUGEN27771
А он должен там быть? Это же lua спецификация. Взгляни сюда.

Мне кажется, всё гораздо проще сделать можно. Из JS я так понимаю можно файл писать (file_mem, @serialize, file_avail(handle))? Ну вот. Пишем лог миди ивентов во внешний файл обычным текстом (по возможности удаляя первые строки файла по набору, скажем, 1000 строк в файле, чтобы имитировать буфер именно последних сообщений), а там я уже могу написать что-нибудь, что извлечёт из этого файла всю инфу для midi айтема (фильтруя CC и преобразуя noteon/noteoff в ноты).
 
Последнее редактирование:
belovw, ну если из JS кто-то может напрямую выгнать .mid (какой-нибудь функцией или чанк-> hex -> bin), то да. Если нельзя, то лучше читаемым текстом.
 

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