Заморозка VST инструментов без FX

borisuperful

Well-Known Member
31 Янв 2013
2.017
1.158
113
Доброго времени суток всем! Как-то забыл освятить здесь о своей довольно свежей разработки для заморозки VSTi инструментов без эффектов - что позволяет эффективно разгрузить ASIO буфер и при этом продолжать сводить аранжировку. Правда это актуально не для многоканальных VSTi, только для одиночек, но и это уже неплохо. Скрипт делает рендер инструмента в новый аудио тейк, который перекрывает миди тейк. Тем самым инструмент обходится и перестает быть активным.

Казалось бы тут все очень просто, но нет. Есть много заморочек, при которых скрипт может повести себя неверно. Аналогов именно этому скрипту пока нет, тут я "позанудничал" из-за всех сил :) По пунктам напишу некоторые особенности работы скрипта, которые отличают его, например, от старого Script: gen_Render selected item as new take, up to last VSTi.lua (это наиболее похожий на мой скрипт).
Итак - то, что сейчас доступно в API (и в ближайшем будущем вряд ли что-то поменяется), представляет из себя процесс достаточно схожий с макросом, хотя конечно же с кучей возможностей, которые не дают макросы.

1) Чтобы срендерить инструмент без применения эффектов после инструмента, нужно физически увести эффекты в байпас. А потом правильно восстановить им активное состояние (скажем если вы уже что-то забайпасили, это трогать не нужно вообще). И главный здесь подвох в том, что при наличии bypass envelope для эффекта, блокируется возможность увести в байпас эффект на протяжении всего трека. Поэтому нужно сначала отключить bypass envelope, потом уже байпасить эффект. Потом все восстановить. Ни один похожий скрипт это не учитывает, а момент очень-очень важный, иначе рендер произойдет некорректно (в итоге два раза применится один и тот же эффект)

2) Скрипт четко ограничивает некорректные сценарии, либо предупреждает о не очень подходящих сценариях, при которых он срендерит инструмент, а именно:
а) Несколько инструментов на одном треке. На всякий случай, кто делает подобное и догадается применить скрипт - не получится. Скрипт блокируется, в первую очередь потому что API не дает возможности найти все инструменты, только первый из них. Во вторую очередь это просто нелогично, да и порядок эффектов и инструментов в рипере может быть любым. Поэтому актуальна только схема - миди эффекты (если есть) + инструмент + аудио эффекты (если есть).
б) Нету инструмента на треке. Тут понятно, тогда звучать ничего не будет. Скрипт блокируется.
в) Не выбраны только миди тейки. Понятно, тогда инструмент не будет принимать никакие сигналы. Скрипт блокируется.
г) На миди тейке есть эффекты или автоматизации. Автоматизации и так не работают (они предназначены для аудио), а миди эффекты будут применяться после Glue (то есть удалятся) - получится не приемлемо. Я тестировал, в результате некоторые миди эффекты не корректно применяются, пока так.
д) Далее есть предупреждения:
- При настройке, когда инструмент не уходит в байпасс или оффлайн после рендера - скрипт предупреждает о том, что среди перекрывающихся миди айтемов не все айтемы выделены. Например ситуация когда есть item lanes:

1630437245159.png

То есть когда второй слой айтемов не срендерится, звучание может получится совсем иным (когда будет сумма аудио + миди от инструмента). Также можно настроить чувствительность обнаружения перекрытия миди айтемов, чтобы не реагировать на случайные микроскопические перекрытия (например в связи с MIDI PPQ сеткой)
- При настройке, когда инструмент уходит в байпасс или оффлайн после рендера - скрипт предупреждает о том, что не все айтемы на треке выделены. Тогда оставшиеся миди айтемы на треке не будут звучать.
- Если изменен item volume или take volume, скрипт предупреждает, что они будут применены после Glue. И это иначе отразиться на велосити внутри миди айтема.
- Если есть активные Pre-FX envelopes на треках. Volume pre-FX может менять велосити на миди айтемах. После рендера в аудио Volume Pre-Fx envelope будет менять уже аудио :) Поэтому скрипт обязан увести в байпас Pre-FX envelopes после рендера, но предупреждает об этом факте.

Все предупреждения можно отключить! Но в основном предупреждения пригодятся, и в обычных сценариях не будут появляться. Тем самым скрипт безопасно отработает во всех ситуациях и не поломает проект.
Также насчет Glue. Пока что это вынужденная операция, которая позволяет правильно применить все параметры айтема в новый айтем с аудио тейком. Также она позволяет в первую очередь склеить все кусочки и правильно добавить хвост рендера (который по умолчанию надо ввести в окне). В дальнейшем я подумаю, и может реализую так, что для одного айтема Glue происходить не будет. Для этого надо учесть куча параметров, которые не должны примениться в аудио тейке. Еще Glue удаляет лишние аудио тейки, что было также частью моей задумки.

В целом и все! Некоторые мелочи описал, на мой взгляд скрипт на текущих версиях рипера будет работать без ошибок и без странных результатов.
Все пожелания или ошибки пишите в данном топике! Что смогу учту и поправлю.
Сам файл скрипта прикреплен под постом. В моем репозитории также доступен (в подписи).

Гифка как работает скрипт. Естественно это работает разом для нескольких треков, то есть можно кучку инструментов так заморозить.

77672399cb767bb7cfff8.gif
 

Вложения

Последнее редактирование:
Да, еще надо было написать - фишка с виду похожа на transform instrument track из S1. Но не уверен, что скрипт ее повторяет, т.к. здесь инструмент легко возвращается в строй, а там он превращается в аудио трек. Может я уже забыл S1, но кажется там так :) По крайней мере там точно нельзя было заморозить таким образом только часть трека.
 
@borisuperful, Спасибо! Нужный и удобный скрипт. А как можно отключить диалог ввода хвоста при применении скрипта?
Я просто никогда не использую эту функцию. Если хвост нужен, то миди айтем я делаю длиннее. А так получается всегда выскакивающее окошко.
И я так понял это обновление? У меня в твоём репозитории есть такой)
 
И я так понял это обновление? У меня в твоём репозитории есть такой)
Да, возможно с тех пор уже обновил. Грядет еще одна обнова. Там я с Cancel render (точнее с Glue и Render to take) разобрался как сделать, чтобы все верно восстанавливалось.

А как можно отключить диалог ввода хвоста при применении скрипта?
Вначале скрипта есть параметр user_inputs, ставишь false
 
  • Like
Реакции: YuriOl
@YuriOl, а так все там работает сейчас вполне добротно. Ошибки конечно всегда будут, но сильно критические судя по всему не попадутся так просто. То есть не каждый догадается нажать Cancel render, при котором там также сейчас ничего не ломается, но некорректно восстанавливаются Pre-FX envelopes (остаются в байпасе как по задумке после рендера) + инструмент не возвращается в онлайн/анбайпасс (если по настройкам должен уйти в оффлайн или байпасс). Завтра сюда залью обнову :)
 
Последнее редактирование:
  • Like
Реакции: sve, Antonio и YuriOl
И я так понял это обновление? У меня в твоём репозитории есть такой)
Да, тот же скрипт уже был пол года назад, поэтому я может и слукавил, что он свежий, но и не старый.
В любом случае именно в свежей версии в посте (на данный момент) все эти особенности.
 
  • Like
Реакции: YuriOl
Так, новая версия с исправлениями после cancel glue или cancel render to take. Надеюсь без ошибок :)
 

Вложения

@borisuperful, уже давно пользуюсь твоим замечательным скриптом - Script: Yaunick_Float instruments from insert or send at selected track or toggle folder collapse.lua и только недавно заметил странность.)
Скрипт от горячей клавиши работает везде отлично, а если запускать с кнопки на панели, то тоже работает, но кроме функции toggle folder collapse. Не переключает папки. Из-за чего это происходит?
Мультик: s.gif
 
@borisuperful, уже давно пользуюсь твоим замечательным скриптом - Script: Yaunick_Float instruments from insert or send at selected track or toggle folder collapse.lua и только недавно заметил странность.)
Скрипт от горячей клавиши работает везде отлично, а если запускать с кнопки на панели, то тоже работает, но кроме функции toggle folder collapse. Не переключает папки. Из-за чего это происходит?
Мультик: Посмотреть вложение 207541
Ответ в репозитории - этот скрипт только для mouse modifiers, то есть он определяет какой трек в TCP он или в MCP под курсором мыши. Там нужны разные действия для работы папки. Соответственно когда мыши над треком нету, он ничего не делает, кроме инструмента.
 
  • Like
Реакции: YuriOl
Ответ в репозитории - этот скрипт только для mouse modifiers, то есть он определяет какой трек в TCP он или в MCP под курсором мыши. Там нужны разные действия для работы папки. Соответственно когда мыши над треком нету, он ничего не делает, кроме инструмента.
Понял. Спасибо! :)
 
Понял. Спасибо!
Можно там конечно сменить алгоритм, за счет чего убрать определение трека под курсором мыши. К примеру когда открыт микшер, то открыть/скрыть папку одновременно в TCP + MCP. Но в этом скрипте не хочу это делать, задумка была иная
 
@borisuperful, да нормально и так. Я просто не мог понять почему так происходит. Теперь всё понятно! :)
Мои скрипты теперь есть в реапаке. Теперь там стало намного проще все делать с темплейтом и ботом для индексирования.
Вот ссылка. https://github.com/Yaunick/Yannick-ReaScripts
Имя скриптов и папки будут новыми, чтобы не перепутать. В соответствии с папкой в реапаке помечается категория скрипта.
На момент написания сообщения пока моей ссылки нету в листе репозиториев на сайте Reapack, должна появится.
 
  • Like
Реакции: sve и YuriOl
Мои скрипты теперь есть в реапаке. Теперь там стало намного проще все делать с темплейтом и ботом для индексирования.
Вот ссылка. https://github.com/Yaunick/Yannick-ReaScripts
Имя скриптов и папки будут новыми, чтобы не перепутать. В соответствии с папкой в реапаке помечается категория скрипта.
На момент написания сообщения пока моей ссылки нету в листе репозиториев на сайте Reapack, должна появится.
А которые из под питона) обновлялись удалять теперь? Или просто py файлы удалить только?
 
А которые из под питона) обновлялись удалять теперь? Или просто py файлы удалить только?
Можешь все удалять. Их я соответственно не буду поддерживать, пока существует реапак :) Но если что восстановим
 
  • Like
Реакции: YuriOl
А инструменты должны сами байпаситься?
Приветствую, байпасятся если поставить здесь настройку!

208766


Но практический смысл именно в том, что инструмент в быстром доступе для возврата с помощью переключения тейка. При этом аудио тейки перекрывает миди и инструмент обходится. А ASIO буфер в основном освобождается именно от того, что инструмент не играет, то есть необязательно выгружать, это важнее для ОЗУ
 
  • Like
Реакции: sve и Elijah K
@borisuperful, приветствую, подскажи пожалуйста, как отключить в скрипте предупреждение о том, что не все айтемы на треке выделены (перекрывающиеся айтемы)?
 

Вложения

  • Безымянный.jpg
    Безымянный.jpg
    123,2 KB · Просмотры: 59
Последнее редактирование:

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