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

  • Автор темы Автор темы @Michael
  • Дата начала Дата начала
Я вот смотрю ЧТО МОЖНО делать при помощи таблиц в LUA и ...... потихоньку его ковыряю....
Я уже тоже об этом подумываю.Там хоть найти что-то можно,по eel в поиске ноль.Такое ощущение,что он кроме Рипера нигде не используется.Просто просто за все сразу браться при ограниченном времени не хочется.
==========
О,пока писал,пришло в голову простое и эффективное решение!
C файлами проблема в том,что когда применяется Glue,то айтемов уже в проекте нет как бы,а файлы лишние на диске есть.Можно же ведь заранее скопировать их проекте,вставить специально созданный пустой трек в конец проекта,или на скрытый с плагином,так даже запоминать и создавать ничего не надо и применить экшн с удалением файлов.
[DOUBLEPOST=1449831671,1449793140][/DOUBLEPOST]Вот это чудеса,да!
3.gif
Обратите внимание,если это кому-то интересно,это ОДИН буфер на 380 секунд стерео.
Джастин втихаря добавил опцию на расширение памяти до 32 млн.,на github практически случайно.
Уже после этого посмотрел по списку обновлений,да есть,мелкими буквами,как всегда.Типа,рюшечку какую-то незначительную добавили,не обращайте внимания,ребята.
Это сильно меняет ситуацию,с таким объемом нужно в четыре раза меньше плагинов,ресурсов и т.п. и вообще можно чудить!
 
Последнее редактирование:
  • Like
Реакции: belovw
Блин,на радостях забыл,http://www.reaper.fm/whatsnew.txt
Там в разделе JS и скриптов.
maxmem=xyz up to about 32 million items
Точное число 8388608*4= 33554432
Вот так можно проверять сколько памяти осталось-
__memtop();
 
Последнее редактирование:
  • Like
Реакции: belovw
@EUGEN27771, похоже по умолчанию дают всё таки 8mw. А это всего 3 мин 10 сек. Что собственно только что и показал тест с поим плагином PreRecordAudio. Не хочет он больше этого значения экспортировать (export_buffer_to_project). Видимо опцию на 32mw нужно как-то активировать.
 
Так там же написано-options:maxmem=33554432
Здесь максимум поставил.
В Js в начале добавьте строчку,блин,это круто.
 
  • Like
Реакции: Aleksandr Oleynik
@belovw, так нет мануала,только тот,что на сайте Рипера.А в мануале с сайта новых функций нет вообще!
А что у Вас не работает?
[DOUBLEPOST=1449834330,1449833881][/DOUBLEPOST]Может версия Рипера,там 5.1 нужна
 
Да там же написано,в секции options:
options: maxmem=xyz(максимум 33554432)
Структура файла http://www.reaper.fm/sdk/js/js.php#js_file
options идет до init
Уже сто раз проверил,все работает четко,никаких проблем нет.
 
JS = EEL
JS документация = EEL документация
Различия в API минимальны и расходятся с учётом потребностей JS/ReaScript.

по eel в поиске ноль.Такое ощущение,что он кроме Рипера нигде не используется.
Так и есть, он был разработан Cockos: http://www.cockos.com/jesusonic/
Lua появился на 10 лет раньше и используется во многих областях.
Вот интересная цитата из вышеприведённой страницы, правда она больше к JS относится, но я бы насторожился:
  • This is unsupported software -- many things may be broken, and it may not work completely as you expect.
 
Последнее редактирование:
  • Like
Реакции: lil-burn и EUGEN27771
Lua появился на 10 лет раньше и используется во многих областях.
Значит,точно надо lua изучать по мере возможности.С++ я,наверное,не осилю.
В eel очень много чего есть,это я увидел пока искал хоть какую-то информацию.Там очень интересные вещи,делаются,только без документации ничего этого не понять никогда.Наверное,это только Джастин лично знает,секретная документация.Еще,про eel очень часто упоминается,что он сверхустойчив,что для реал-тайм задач(JS) основное требование.
 
Lua для аудио/миди также можно использовать, просто этим никто раньше не занимался: http://www.osar.fr/protoplug/
Тут используется http://luajit.org/luajit.html, по скорости работы опережающий JS, насколько мне известно. По словам schwa, если возникнет необходимость каких-то скоростных операций для Lua, они включать LuaJT в основной дистрибутив рипера или включат поддержку для сторонних Lua библиотек.
 
@belovw, ну так заработало у Вас?
раньше не было секции Options и ещё чего-то.
Она давно уже есть,я в разных JS видел,но в документах ее действительно раньше не было.
[DOUBLEPOST=1449847732,1449847321][/DOUBLEPOST]Эта секция интересна еще тем,что там можно расширить объем еще и глобальной памяти присвоением ей уникального имени.Раньше до 8м.И она отдельна от локальной,это я проверял.И что-то кажется мне,что теперь,она будет расширяться тоже до 32м.
А это 64млн с одного эффекта.Надо проверить.Можно писать сначала в локальную,потом в глобальную,потом объединять.
 
  • Like
Реакции: Aleksandr Oleynik
Заработало, только если значение длины буфера превышает максимально допустимую, то ехпорт не работает.
 
@belovw, не допускайте.Поставьте макс значение итерации и все.
Или поставить этот __memtop(),тоже новая функция,как условие,если равен нулю,больше в буфер не писать.
 
@EUGEN27771, до использования maxmem, ехпорт работал при превышении максимальной длиниа мбуфера, правда с ограничением в 8mw. Т.е при превышение максимальная длина составляла всегда ~3 мин 10 сек. Сейчас же при превышение длины функция отказывается работать. Хотелось бы изучить её поведение, что бы исключить сюрпризы.
[DOUBLEPOST=1449857790,1449857689][/DOUBLEPOST]Я смотрю вы тут убежали вперёд что только одни пятки в дали сверкают - не догонишь уже поди.
 
Хотелось бы изучить её поведение, что бы исключить сюрпризы.
Да вроде гонял ее и так и сяк,поставил на запись ушел на час,больше даже,все нормально.
Я смотрю вы тут убежали вперёд
нет,сам ковыряюсь по мере возможностей.Я же тут все описывал подробно,как что можно сделать,пока сам разбирался,но почти никто не читает.
Вот мысль еще одна-сделать ретроспективную запись без воспроизведения.Надоело воспроизведение клацать:).Нужно такое или нет?Хотя без разницы.Мне идея нравится.
 
Сделаю,все в принципе тоже самое.Только механизм сброса продумать нужно.
 
Но это должны быть два не зависимых режима.
Один на мертво сявязан с позицией на таймлайне, а второй - просто фоновый рекордер.
 
Но это должны быть два не зависимых режима.
Почему два независимых? Рекордер один - JSFX. Сброс тоже один. Нужно только изменить логику сброса. Возможно понадобится введение условий.
 
Рекордер понятное дело один, а нажат плэй или нет - нужно ведь учитывать...
Хотя......, может ты и прав - не нажат плэй, значит вся колбаса ляжет на таймлайн тупо от точки, на которой будет локатор стоять и всё.
 
Последнее редактирование:
Нужно только изменить логику сброса. Возможно понадобится введение условий.
На самом деле это не так просто.С самой записью вообще никаких проблем.Она и так идет,для записи миди,правда,нужно добавлять кое-что,но это легко.
А вот новая логика сброса-посложнее.Конечно,можно сделать тупую логику из одной строчки-типа сменился playstate с 1 на 0 и наоборот, с 0 на 1-сбросить буфер,но это лажа,а не логика-терять буфер при остановке.
Для миди проще всего ориентироваться на поступившие сообщения-если что-то новое пришло,то сбрасывать.Тоже зыбко,можно случайно задеть контроллер или ноту,и буфер сброшен.
Для аудио придется хорошо подумать,еще и с учетом того,что JS-плагин не один,и вся цепочка должна продолжать функционировать.
Скорее всего,нужно отслеживать и предварительные состояния playstate
=====
Тут еще одна проблема с Аудио нарисовалась.Компенсация задержки.С миди все было относительно просто-там нет файлов.
Вот Аудио-айтем основан на файле,а у файла есть края-начало и конец.Когда я добавляю компенсацию задержки,начало уходит за пределы айтема,но это приемлемо,так и должно быть.А вот конец уходит внутрь айтема,и получается пустой фрагмент по времени компенсации.
3.gif
Для линейной записи это не так важно,но для циклической это плохо.Обычная запись пишет все циклы в один файл, и только расставляет края айтема,поэтому там такого не наблюдается.Я могу сделать примерно также,но теперь придется переписать все чуть ли не с нуля... проблема решена
 
Последнее редактирование:
  • Like
Реакции: Aleksandr Oleynik
С какой целью добавляешь компенсацию задержки?
Чтобы от обычной записи не отличалось.Чисто практически,это ловля блох,конечно.Но всегда хочется сделать лучше.У меня обычная запись вычитается в ноль с аудио из буфера во всех режимах,это очень неплохо.Попутно переделаю некоторые другие моменты.
===
Понял кажется,почему Вы спросили.
У меня буферы выставляются не произвольно,куда поставишь курсор,а четко привязаны ко времени проекта.То есть где было записано,туда и будет выставлятся,с точностью до сэмпла.
 
Последнее редактирование:
  • Like
Реакции: Aleksandr Oleynik
У меня буферы выставляются не произвольно,куда поставишь курсор,а четко привязаны ко времени проекта.То есть где было записано,туда и будет выставлятся,с точностью до сэмпла.
И это ГИПЕР верно!
[DOUBLEPOST=1449957435,1449957347][/DOUBLEPOST]@EUGEN27771, Женя, а тишину сейчас ты тоже пишешь?
Или выкупаешь наличие сигнала и только тогда заполняешь буфер информацией?
 

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