LUA: Optimization Real -Time Performance and Hide Show track without item in selection (1 онлайн

Aleksandr Oleynik

Well-Known Member
16 Янв 2007
26.360
20.064
113
62
Киев
Решил сделать отдельную тему, чтоб не засорять обсуждениями общую тему скриптов.
По первому скрипту - Optimization Real -Time Performance -
Скрипт выключает на треках FX OnOff, на которых в данный момент под позицией плей курсора или позицией эдит курсора нет айтемов или на айтемах тишина (и миди и аудио тишину скрипт понимает).
Тем самым разгружает и CPU и Realtaime CPU.

Идею подал @Slick затем долго обсуждали, @Maestro Sound и @belovw подключились.
Была сделана первая попытка, выяснили, что может получиться полезная вещь.
Если бы не @EUGEN27771 я бы и не взялся, Женя написал две основные функции для Аудио и для Миди айтемов - по сути Гейт, который по задаваемым параметрам -

peakrate = 10 -- кол-во пиков Wav кривой в секунду, которые берутся в рассчёт
retrig_sec = 1 -- время в течении которого скрипт не реагирует на понижение уровня пика
attThresh_dB = -50 -- уровень Wav кривой выше которого скрипт включает Fx OnOff
relThresh_dB = -55 -- уровень Wav кривой ниже которого скрипт выключает Fx OnOff
on_offcet = 0.3 -- офсет в секундах на включение, на него быстрее будет включаться - И ЕГО стоит УВЕЛИЧИТЬ, если используете в проекте плагины с задержкой!!!
off_offcet = 0.1 -- офсет в секундах на выключение, на него позже будет выключаться
volume_off_dB = -55 -- уровень сигнала на треке при котором выключаются плагтны

строит таблицу точек времени на котором нужно (можно) включить или отключить плагины на треке.
Особенно круто получилось с Миди, так как ни чего подобного для Миди, на сколько я знаю, и не было.

Указанные выше настройки можно прямо в срипте (если он не работает) менять и эксперементировать.
Для наглядности Женя сделал ещё и тестовый режим создания кривых -
В скрипте это строка -
-- TEST_Env = true -- отображает кривую на треках с айтемами (только для настроек и тестов)
убираете первых два тире и сохраняете скрипт, под каждым из айтемов будет построенно нечно такое -
2017-11-18_145427.png
Это просто удобная визуализация точек срабатывания Гейта, причём с учётом офсетов, но без учёта звуковой картинки после звучания - т.е. отключение (в зависимости от обработок на всех связанных треках) может быть и позже.
Тут хорошо видно, что новой функции всё равно, порезан айтем на отрезки полезной информации (убранна в ручную тишина) или нет, он всё равно определит когда плагины можно отключить, а когда нужно включить.

Я писал ту часть, которая касалась Логики, работы с зависимыми треками, с нажатой Recarm, с уровнем громкости на связанных треках (паренты, сенды), чтоб не выключить плагины пока идёт звук от дилеев или реверов, и т.п.
Есть там в начале скрипта ещё параметр -
defer_rate = 16 - он отвечает за скорость циклов опросов состояния проекта при некоторых действиях. Стандартно этот параметр где-то 33 цикла в секунду (быстрее скрипт работать не умеет), но в данном случаи я посчитал возможным его понизить в два раза, но можете эксперементировать.

Оттестировал достаточно плотно, но не исключены глюки и не доработки.
Буду рад фидбэку. Также прошу писать сколько % экономии ресурсов даёт на вашем проекте скрипт (было-стало тоже подходит).
Очень был бы признателен тем, кто проверил бы его на оркестровых проектах.


Второй скрипт Hide Show track without item in selection тоже обсуждался в этом же контексте - удобства работы с большими проектами.
Смысл его в том, чтобы скрывать из окна аранжировки (можно и из окна микшера сделать, если нужно будет) не участвующие в выбранном учатке аранжировки треки.
При работе скрипта остаются только те треки, айтемы которых хоть краем задевают выделенную тайм селекшин, а также связанные с ними треки посылов и родительские треки.
Скрипт запоминает состояние спрятанных-показанных до его запуска и восстанавливает его.

Оба скрипта могут работать и отдельно и вместе.

PS: Забыл написать, лучше отключить отображение undo в меню, иначе его скоростная смена скриптом просто будет раздражать и мешать работать -
2017-11-18_235239.png

PSS: Текущие версии скриптов -
!_Optimization Real-Time Performance v4.3
Hide Show track without item in selection v6.1

Проверяйте перед использованием.
В версии Hide Show track without item in selection v6.0 - исправлена ситуация с посылами из фолдер треков и наличие фолдер треков у треков, на которые отправлен посыл.
Таже изменена реакция на треки айтемы которых лиш касаются выделенной области, но не входят в неё - они тоже прячутся.
В версии !_Optimization Real-Time Performance v4.0 - также исправлена ситуация с посылами из фолдер треков и наличие фолдер треков у треков, на которые отправлен посыл.
Обновил!_Optimization Real-Time Performance v4.1 - мелкие помарки и вернул deffer = 16
!_Optimization Real-Time Performance v4.2 - вернул некоторые функции в прежнее состояние.
!_Optimization Real-Time Performance v4.3 - исправлен баг с сендами на соседних чайлдах.
Обновил - Hide Show track without item in selection v6.1 - добавил параметр в начале скрипта - SHOWINMIXER - если он = 1 - значит скрываться треки будут и в Микшере, если сделать = 0, то будет как и раньше - только в окне Аранжа.
 

Вложения

Последнее редактирование:

PianoIst

Well-Known Member
19 Май 2010
4.101
4.154
113
29
Kirchberg, kreis Zwickau
soundcloud.com
Код:
...ER\Scripts\!_Optimization Real-Time Performance v3.0.lua:77: attempt to call a nil value (field 'BR_GetMidiSourceLenPPQ')
Может дело в том, что у меня миди-треки тоже просто миди-треки, и у них нет посыла никакого на мастер, только сенд на конкретный порт трека-инструмента?
[DOUBLEPOST=1511031819][/DOUBLEPOST]вообще он мне все эти строчки в IDE подсвечивает:
Код:
reaper.BR_GetMidiSourceLenPPQ
Может, у меня в API чего не хватает, какие-нибудь не последние SWS/SWM?
 

PianoIst

Well-Known Member
19 Май 2010
4.101
4.154
113
29
Kirchberg, kreis Zwickau
soundcloud.com
@Aleksandr Oleynik, эммм... Ща попробую смастерить)
[DOUBLEPOST=1511032104][/DOUBLEPOST]@Aleksandr Oleynik, не поверите, взял чистый проект, поставил чистую миди-дорожку без всего, и тут же получил ошибку.
Скорее всего что-то с API
[DOUBLEPOST=1511032277][/DOUBLEPOST]вообще интересно. Глянул в API, для EEL эта функция помечена, как extention, а для остальных языков - нет
[DOUBLEPOST=1511032363][/DOUBLEPOST]а поставлю-ка я 5.62 рипер
 

Aleksandr Oleynik

Well-Known Member
16 Янв 2007
26.360
20.064
113
62
Киев
Кстати, я один Баг в Hide Show track without item in selection сам уже обнаружил - прячутся треки, у которых выделенна только часть в середине айтема какого-то
[DOUBLEPOST=1511032437][/DOUBLEPOST]
а поставлю-ка я 5.62 рипер
А какой стоит?
У меня всегда последняя бэтка.
 

PianoIst

Well-Known Member
19 Май 2010
4.101
4.154
113
29
Kirchberg, kreis Zwickau
soundcloud.com
5.52. Просто у мменя сейчас очень тяжелые проекты, которые грузятся по полчаса. И когда он выкидывает сообщение об обновлении, мне обидно перезапускать их. А потом забываю, как всегда
 

PianoIst

Well-Known Member
19 Май 2010
4.101
4.154
113
29
Kirchberg, kreis Zwickau
soundcloud.com
а вот и нет... в 5.62 тоже ругается...
[DOUBLEPOST=1511033216][/DOUBLEPOST]а вообще в каких случаях он может nill возвращать?
UPD: А, он не возвращает, он трек, видимо, неправильно подхватывает, и пытается вызвать функцию не для трека, а для nill.
тоже странно
[DOUBLEPOST=1511033530][/DOUBLEPOST]от. На эту строчку тоже ругается
Код:
 reaper.BR_GetMediaTrackByGUID
 

Aleksandr Oleynik

Well-Known Member
16 Янв 2007
26.360
20.064
113
62
Киев

Вложения

PianoIst

Well-Known Member
19 Май 2010
4.101
4.154
113
29
Kirchberg, kreis Zwickau
soundcloud.com
@Aleksandr Oleynik, а что там про галку на undo было?
пока что в проекте пальцем пошевелить не могу :)
[DOUBLEPOST=1511036867][/DOUBLEPOST]В общем, с оркестром фейл :(
Дело в том, что вена адски долго включается, особенно, когда дело касается слейв-машины.
У меня на то, чтобы просто откры-закрыть окно плагина VePro может уйти больше минуты. Что собственно и происходит при работе скрипта: трубы по вене подрубились примерно через 20 сек после начала своей партии, при том, что нагрузка на CPU снизилась на 3-4%.
А при этом, тромбоны, которые подрубились заранее, когда на них стоял курсор в состоянии stop - отыграли.
Ну и отсюда же вытекает та проблема, что постоянное подключение-отключение ~30 плагинов VEPRO банально фризит рипер намертво. Отвисает он только после того, как доиграет до конца. В режиме простоя лаги до 3х секунд...
С контактом голым в этом отношении, думаю, все гораздо легче, надо будет потестить. Но с голым контактом всплывают другие проблемы, в основном, стабильности (про то, что пол оркестра крутится на сервере промолчим)
 

PianoIst

Well-Known Member
19 Май 2010
4.101
4.154
113
29
Kirchberg, kreis Zwickau
soundcloud.com
с голым контактом и ~50 инструментами сэмплмоделингов работает замечательно! Как часы. с 36% в режиме простоя RT CPU упал до 1% во время прогигрывания. Больше пока не подружал, ибо не хочу опять прогружать вену полчаса для работы.
Но как вот заставить его работать на вене - у меня пока идей никаких...
 

Aleksandr Oleynik

Well-Known Member
16 Янв 2007
26.360
20.064
113
62
Киев
Про undo забыл написать. Добавил скриншот в первый пост.
Про Вену, да и про другие подобные плагины, которые грузятся на слабых компах из байпаса долго (правда это наверняка только реваер плаги будут), можно сделать чтоб треки с ними скрипт просто не трогал, это не сложно совсем.
Кинь мне точное название всех плагов Вены, ну или тех, что инстанции подгружают, или обратка тоже тупит? Знаешь где смотреть название?

Ну и ещё вариант - а может с этим скриптом и Вена будет не нужна, а все Контакты на одном компе в Рипере заработают? :)
Кстати, было бы прикольно это проверить. Но просить не могу, представляю на сколько тяжело пересобрать такой проект. А может всё же сделаешь?
 
Последнее редактирование:
  • Like
Реакции: PianoIst

Alex_HS

Super Moderator
Команда форума
19 Ноя 2002
19.736
28.398
113
57
Москва
Сейчас навскидку прогнал Optimization Real-Time Performance на "тестовом" проекте, работает, но иногда пропускает начала тихих вокальных фраз с уровнем явно больше -50дБ. После поднятия начала фразы по громкости начинает срабатывать корректно. "Тест" очень приблизительный пока, но сама идея - просто бомба!!!
 

Aleksandr Oleynik

Well-Known Member
16 Янв 2007
26.360
20.064
113
62
Киев
@Alex_HS, я написал в первом посте - величины срабатываний можете сами изменить.
Но я могу сделать что-то типпа Доп скрипта для настройки, чтоб не лазить в скрипт не умелыми руками.
 
  • Like
Реакции: YuriOl, Al Brazy и Alex_HS

PianoIst

Well-Known Member
19 Май 2010
4.101
4.154
113
29
Kirchberg, kreis Zwickau
soundcloud.com
Вена будет не нужна, а все Контакты на одном компе в Рипере заработают?
утопия :) На тутти все равно скакнет на все 250%. К тому же загрузку оперативки никто не отменял, а она отжирается даже при выгруженных сэмплах на > 20 ГБ
А вот вопрос по игнору вены тоже очень спорный. Как я и сказал, вена обладает рядом достоинств, помимо пересылки даты по UDP:
  • Она дает двустороннюю защиту от падений, которые периодически случаются. Если падает хост - не надо тратить время на полную перегрузку всех инструментов, что оочень долго. Если падает вена - можно спокойно сохранить проект и перезапуститься, т.к. плагины все равно сохраняют все параметры и плагины внутри инстанций, даже будучи оффлайн
  • Можно смело свапать несколько проектов одного тимплейта по причине пункта 1, при этом не теряя драгоценные часы на их загрузку
  • ЦП-таки во многих случаях работает лучше за счет распределения потоков руками юзера по принципу, как лучше работает, а не как хост решил (и только тут скрипт начинает давать фору вене)
Почему она грузится долго - хз, если честно. Компы свои слабыми назвать не могу. Скорее всего, он трогает при загрузке все параметры плагинов, чтобы они все заработали в нужном семплрейте, буфере и т.д. Да и банально, контакт если просто отключен, может он и не инициализирует потом все хозяйство внутри, а если вена прямо говорит, что аудиодвижок полностью перезапущен - он начинает компилировать все скрипты во всех инсрументах, что долго.
 

Subers

Member
4 Фев 2008
75
43
18
@PianoIst, про Виену вообще забудьте про этот скрипт, это вообще иная идеология! Она выходит за рамки рипера.
Тут именно только работа в среде рипера.
Ещё не щупал скрипт, но попробую на днях.
 

PianoIst

Well-Known Member
19 Май 2010
4.101
4.154
113
29
Kirchberg, kreis Zwickau
soundcloud.com
@Subers, ну дык был вопрос про оркестровые проекты. А оркестровые проекты без вены никуда, хоть тресни.
Пробовал риперовский вариант "вены", забыл как называется - вообще не вариант.
Даже при тщательной ревизии версии и наваний плагинов часто каку загружает. Да и оптимиация работы по сети куда хуже веновской...
Единственный боль-менее реальный потенциальный конкурент вене - jack, но к нему ж не подрубишь ничего, кроме линуксовых синтезаторов и примитивного linuxsampler, под который нормальных инструментов нема
 

Alex_HS

Super Moderator
Команда форума
19 Ноя 2002
19.736
28.398
113
57
Москва
Пробовал риперовский вариант "вены", забыл как называется - вообще не вариант.
А для меня как раз Вена не вариант, в отличие от Риперовского ReaMote, ибо при использовании только обработок, а не сэмплеров, там гемор с маршрутизацией получается. А через Римот цепочка плагов одним кликом на удалённую машину посылается, единственный глюк - в плагах перестаёт вся индикация работать.
 

PianoIst

Well-Known Member
19 Май 2010
4.101
4.154
113
29
Kirchberg, kreis Zwickau
soundcloud.com
единственный глюк - в плагах перестаёт вся индикация работать.
а... Я начинаю вспоминать, почему ремоут - не вариант.
Контакт же грузить начинает инструменты и там и там в оперативку, хоть миди и аудио не обрабатывает. Да и у библ копия должна быть. Если, конечно, я правильно вспомнил
 
  • Like
Реакции: Alex_HS

@Michael

Well-Known Member
14 Дек 2010
969
1.461
93
Орёл / Москва
Проше хранить в репозитории отдельном и обновлять также как остальные (например через GitHub Desktop + GitShell ):
1) избавишь себя от постов вида "перекачайте/отредактируйте/замените", то бишь обновление посредством экшна ReaPack: Synchronize packages;
2) Репозиторий можно будет внести в https://reapack.com/repos для большего количество юзеров, в т.ч. зарубежных, что в свою очередь обеспечит более качественную обратную связь;
3) коллективный разум. GitHub вполне удобен для того, чтобы предлагать/принимать разумные правки,
4) на дворе 2017 год, раздавать rar архив при имеющихся более удобных возможностях - это несерьёзно.


Могу подсобить с конфигом этого всего.
 
Последнее редактирование:

@Michael

Well-Known Member
14 Дек 2010
969
1.461
93
Орёл / Москва
Идея с точки зрения производительности хорошая. Почему отказались от статики (сгенерировать огибающие байпаса) в пользу фиксированного цикла, висящего в фоне?
 

Aleksandr Oleynik

Well-Known Member
16 Янв 2007
26.360
20.064
113
62
Киев
@@Michael, та давно нужно найти на это время и мозги. Спасибо, обращусь.
[DOUBLEPOST=1511081476][/DOUBLEPOST]
Идея с точки зрения производительности хорошая. Почему отказались от статики (сгенерировать огибающие байпаса) в пользу фиксированного цикла, висящего в фоне?
Есть оба варианта скрипта. Есть и статика с обновлениями по определённым событиям (вот эта часть в отношении перечня событий осталась там не доделана).
Как ни странно, но динамический скрипт работает лучше, почему, так до конца и не разобрался...
При статике почему то, при каждом цикле считывания данных из таблицы зависимых треков происходит лёгкий фриз GUI самого Рипера, даже индикаторы на треках фризятся.
А при динамике этого нет.
Видимо в статике происходит одномоментное обновление пула данных, что уже по времени заметно на глаз, как фриз, а при динамике эти фризы мелкие, но частые, и это тупо не заметно.
PS: вообще-то оптимизация нагрузки скриптом на Рипер пока не завершенна.
Формирование таблицы точек огибающей для треков с айтемами Женя сделал весьма оптимизированно. Она глобальная и пересобирается только тогда , когда происходит какое то изменение в айтеме и только для трека, на котором этот айтем.
Таблица финальная всех треков связанных между собой формированием звука сейчас собирается всякий раз заново в цикле дефера, что безусловно нужно постараться переделать...., я этим паралельно занимаюсь.
 
Последнее редактирование:
  • Like
Реакции: Alex_HS

Aleksandr Oleynik

Well-Known Member
16 Янв 2007
26.360
20.064
113
62
Киев
@Subers, ну дык был вопрос про оркестровые проекты. А оркестровые проекты без вены никуда, хоть тресни.
Скажи пожалуйста, а если всё же я сделаю исключение для плагов Вены и треки, на которых они стоят, не будут отключаться вовсе? В основном проекте ведь кроме Вены есть какие-то обработки, или он тупо Мастер с атемами для Вены?
То, что скрипт не будет и не может быть альтернативой Вены ПОНЯТНО. Скрипт не умеет использовать для оптимизации рассредоточенную на несколько компов нагрузку (хотя и над этим подумаю :) )...
Скрип полезен тем, кто Вену использует иногда для разгрузки ASIO (Core Audio) на одном компе - в этой ситуации можно попробовать от Вены отказаться.
 
  • Like
Реакции: PianoIst

PianoIst

Well-Known Member
19 Май 2010
4.101
4.154
113
29
Kirchberg, kreis Zwickau
soundcloud.com
Скажи пожалуйста, а если всё же я сделаю исключение для плагов Вены и треки, на которых они стоят, не будут отключаться вовсе?
в общем и целом - да. И в основном я один такой моральный урод, что барабасы внутри хоста хранит (банально неохота держать в инстанции кучу подготовленных, а просто менять папку трек темплейта в проекте).
в этой ситуации можно попробовать от Вены отказаться.
можно, но не хочется.

К сожалению, мне сейчас реально вообще некогда, но я, когда сдам все страшные дела, включая мед освидетельствование для военкомата, обязательно загружу сервер на linux и попробую еще раз вставить там джек, который решает львиную долю проблем, подвластных вене одной. И... вдруг-таки выстрелит вся эта затея? :)

Просто последний раз (когда я еще был неженат и не папа) по производительности линь + jack совсем немногим проседали по отношению к вене на слейве. Но были нестабильны, и я не пробовал подключать их к риперу, а строил архитектуру на линуксовых DAW
 

@Michael

Well-Known Member
14 Дек 2010
969
1.461
93
Орёл / Москва
Я бы всё же сделал отдельную "легковесную" версию:
1) статикой
2) не анализировать аудио, для тихих кусков есть экшн "Remove silence"
3) не править огибающие, а добавлять/заменять Automation Items с соответствующими именами, дабы в дальнейшем их можно было удалить по паттерну совпадения имени и не трогать AI, созданные пользователем
4) вынести настройки (время, исключения имен плагинов) в отдельный скрипт
 

Aleksandr Oleynik

Well-Known Member
16 Янв 2007
26.360
20.064
113
62
Киев
Я бы всё же сделал отдельную "легковесную" версию:
1) статикой
чисто статикой не выйдет - аранжировка, это ИЗМЕНЕНИЯ в проекте, изменение и состава треков и их назначения, посылов, парентов, изменения в айтемах - всё это влияет на основную функцию работы скрипта с FX On/Off Трека.
И пока я не разобрался, почему даже ЧИСТО статическая таблица сканированных связанных треков работает у меня хуже. Разберусь - возможно сделаю псевдо статику.
2) не анализировать аудио, для тихих кусков есть экшн "Remove silence"
Функции Жени анализируют Аудио и Миди треки с очень высокой скоростью.
Первоначальное составление таблиц по всем трекам проекта из 14 треков с непрерывными айтемами на 2,5 часа делается 628 мс, далее, в ходе работы пересчитываются только те треки, в которых менялись айтемы - это вот для такой длинны проекта (в неё войдёт практически любой полный кино метр) происходит за 40-45 мс и совершенно не заметно для пользователя. Понятно, это на моём не слабом компе :)
Ну и заставлять пользоваться кого-то "Remove silence" я не могу.
Кроме того, мы можем в общем останавливать активность скрипта во время Плэя и тем самым совсем убрать любую причину влияния на звук. Была ещё идея - делать пересчёты только в период пауз в работе пользователя - следить за активностью мыши и клавиатуры. Есть и другие способы снижения нагрузки самого скрипта на Рипер, но пока самым слабым местом оказалось Undo обновление в меню :)......
3) не править огибающие, а добавлять/заменять Automation Items с соответствующими именами, дабы в дальнейшем их можно было удалить по паттерну совпадения имени и не трогать AI, созданные пользователем
Это не понял. Мы не трогаем огибающие вообще. Функция огибающих сделанна ЧИСТО для режима настройки и тестирования - для визуальной отдачи изменённых параметров при настройке.
4) вынести настройки (время, исключения имен плагинов) в отдельный скрипт
Это я сделаю обязательно!
Кстати, именно в него и уберём эти все функции построения огибающих, чтоб ни кого не путали...
[DOUBLEPOST=1511097524][/DOUBLEPOST]
в общем и целом - да. И в основном я один такой моральный урод, что барабасы внутри хоста хранит (банально неохота держать в инстанции кучу подготовленных, а просто менять папку трек темплейта в проекте).
Ээээээ, для одного, пусть даже и симпатичного "морального урода" делать версию скрипта?
Не, не в том смысле, что лень или тяжело, в том смысле - а может НЕ ОДИН ты такой?
 
Последнее редактирование:
  • Like
Реакции: PianoIst

basЫl

атрофировал юмор.
5 Янв 2004
7.170
5.050
113
вена обладает рядом достоинств, помимо пересылки даты по UDP
как раз пересылка по UDP не гарантирует что прилетит то, что отсылалось. UDP обычно используется в приложениях с идеологией "не дошло? ну и хрен с ним, проехали уже.", таких как IPTV, torrent, онлайн-игры.
И это пипец как удивительно в передачи аудиоданных.
https://ru.wikipedia.org/wiki/UDP
 

Aleksandr Oleynik

Well-Known Member
16 Янв 2007
26.360
20.064
113
62
Киев
@PianoIst, Тимофей, а скажи на Венские плагины столь же драматично действует и mute на треке?
Просто с точки зрения отбора ресурсов mute равнозначен FX off, могу для Вены и подобных плагов поменять FX Off на Mute, который не использую в силу исключительно визуального его воздействия на треки.
 
Последнее редактирование:
  • Like
Реакции: PianoIst

Сейчас онлайн (Пользователей: 0, Гостей: 1)