Всё о REAPER
Интернет-клуб пользователей REAPER
 
 

Вход в систему

Поиск

Голосуем!

KVR

Сейчас на сайте

Сейчас на сайте 0 пользователей и 3 гостя.

Как создать кнопку c меняющимся цветом, для плавного изменения громкости, и запрограмировать её.  

Здравствуйте.
Иногда играю в Reaper на VSTi в живую. При этом на разных треках разные инструменты
На треках никаких midi клипов нет и линия воспроизведения не подвижна.
При включении нового VSTi на новом треке (нажатием кнопки соло) происходит резкое добавление-включение звука нового инструмента к уже звучащим.
А хотел бы чтобы это включение было плавным. Например в течении 3-х секунд с тишины до нужной програмируемой громкости.

Вот так возникла идея создать кнопку на тулбаре которая включала бы и выключала на нужном треке VSTi,
но таким образом чтобы громкость была нарастающей при включении, и затухающей при выключении.
Для каждого трека хотелось бы создать отдельную кнопку с индивидуальными настройками, и назначить её потом на горячую клавишу.
Из настроек это номер трека, минимальная громкость, требуемая громкость, время нарастания и время затухания звука.

Естественно одного желания мало.
По этому начал искать возможности реализации этой идеи.
А это создание экшена, который бы реализовал эту возможность, и привязки его к новой кнопке в тулбаре.
Да и ещё было бы идеально если бы при включении VSTi эта кнопка подсвечивалась, а при выключении гасла.

Для одного трека это можно было бы реализовать в виде последовательности команд:
перемещение линии воспроизведения в нужную позицию.
включене воспроизведения в течении например 3-х секунд
Остановка линии воспроизведения.
При этом на треке нужно было бы всего установить кривую громкости с -inf Db до 0 db в течении 3-х секунд.

Хотя это не идеальный вариант, но чтобы даже реализовать это нужно знать есть ли такие действия-команды в Reaper
Так как там всё на английском и команд очёнь много, то пока не знаю какие это монут быть команды.
Если знаете, то буду рад если подскажите.

Второй вариант это возможно использования команд со словами Volume, и +0,1 или -0,1 db
При этом +0,1 или -0,1 db повторять нужное количество раз. И между каждым повтором ставить каманду паузы на какое то количество милисекунд,
чтобы увеличение или уменьшение громкости было не моментальным.
При увеличении громкости первая команда это сброс громкости до -inf Db с добавлениями +0,1 db с короткой паузой во времени нужное количество раз.
Ппи уменьшинии громкости это команды -0,1 db с паузой нужное количество раз.
Опять же есть ли такие каманды-действия в Reaper пока не понятно.

Если же таких команд нет в Reaper, то их видимо можно создать с помощью Piton
Но с этим языком програмирования не знаком, по этому обратился на форум.

Сможите ли подсказать последовательность команд в экшене для реализации данной идеи?


аватар: vegas


Честно сказать, ничего не понял. О каком "резком добавлении-включении звука нового инструмента" идет речь, если "линия воспроизведения неподвижна"?

Наверное, надо начать так:
объясни, что ты хочешь получить от программы в итоге и какое имеется оборудование (клавиатура, миди-контролер и т.п.). А потом подумаем, как этого достичь.

p.s. Тоже иногда посещают мысли использовать Рипер в этих целях, поэтому мне интересно.




аватар: And


Yamaha Psr-520 используется в данное время как миди клавиатура. Звуковая карта NI Komplete Audio 6 (задействован midi in - подключён к ямахе).
А также миди клавиатура (Icon-i-key)на 25 клавиш.
В итоге нужна кнопка при нажатии на которую происходит следующее: громкость например 4-го трека (см. скриншот) плавно (в течении нескольких секунд) увеличивается до например 0 db.
Кнопка подсвечивается.
Пр повторном нажатии громкость 4-го трека плавно уменьшается к минимуму. Подсветка кнопки исчезает.

Это можно было бы сделать с помощью мыши перемещением фейдера громкости 4-го трека.
Но тогда будет обрыватся мелодия на несколько секунд пока это буду вручную делать.
Поэтому нужна кнопка. Нажал быстро и включился заранее запрограмированный алгоритм.




аватар: StaRoFF


А почему на самой Ямахе эту громкость нельзя крутить?
Или вручную,или через педаль




аватар: And


Крутить громкость на ямахе можно, но результата нужного не будет, так как всего одна крутилка для общей громкости через которую midi сообщения не передаются.
И есть только педаль сустейна.
Это первое. Во вторых даже если бы там и были фейдеры как например в Yamaha MOTIF-XS7, это всё равно не то что мне нужно. Я уже писал. Нужны
кнопки для каждого трека в отдельности с заранее запрограмированным алгоритмом.




аватар: And


В общем пробовал создать экшен для воспроизведения отдельных регионов.
Для этого нужно в созданных регионах нужной длины создать пустые midi клипы,
и выставить линию громкости как вам нужно.
При нажатии на кнопку воспроизводится midi клип в регионе, и курсор воспроизведения останавливается в начале следующего региона.
Отдельная кнопка для каждго региона.

Команды на скриншотах



При проверке оказалось, что при запуске кнопки сбрасывается в ноль звучание VSTi,
так что эти экшены годятся может быть только для других целей.




аватар: StaRoFF


Не очень понятно написано
"На треках никаких midi клипов нет и линия воспроизведения не подвижна"(с)
т.е. как я понимаю где-то играет фонограмма,а на Ямахе исполняется партия вживую.
И исполняется она разными VSTi которые настроены на разных дорожках.
И переключением дорожек и происходит смена солирующего инструмента.
Остальные дорожки в этот момент не задействованы-поскольку "линия воспроизведения неподвижна".
Правильно ли я понял?




аватар: And


"На треках никаких midi клипов нет и линия воспроизведения не подвижна" - да - это был бы идеальный вариант для этой цели.
Всё правильно "И переключением дорожек и происходит смена солирующего инструмента". Либо плавное добавление,- например арпеджиатора.
Только включать и выключать эти треки с VSTi плавно надо без резких перепадов звука - нажатием на кнопку, а не мышкой двигая фейдер громкости на том или ином треке. Возможно ли это сделать в случае если линия воспроизведения не подвижна - думаю да. Только каким образом не знаю.




аватар: And


Вот к примеру есть команды которые видны на скриншоте ниже.

Первая команда выделяет 1-й трек. Следующие команды добавляют громкость к выделенному треку по 0,05 db.
Можно добавить нужное количество команд Nudge Track Volume Up, и поднять громкость к нужному уровню.
Вся проблема в том, что эти команды выполняются моментально.
А для плавного изменения громкости нужны команды паузы с каким то количеством милисекунд между командами Nudge Track Volume Up.
Они бы задерживали поднятие громкости.
Существуют ли такие вообще в програмировании и в частности в Reaper,- может и да? По крайней мере мне не известны они.




аватар: And


Есть в Pyton команда time.sleep(сек) - приостановить выполнение программы на заданное количество секунд.
Пробовал сделать скрипт в Pyton с кодом
import time
time.sleep( 0,1 )

При загрузке скрипта c расширением .py выдаётся ошибка Reaper: No upported skript files could be loaded
То есть Reaper не может его загрузить.

Или я что то сделал не так, или в Reaper что то не так.
Видимо придётся освоить ещё язык скриптов lua или eel
Может там тоже есть команда: приостановить выполнение программы на заданное количество секунд.
Если кто уже делает скрипты может подскажите как написать такую команду ?




аватар: StaRoFF


если воспроизведение не работает-значит надо его задействовать.
Пусть по определенной кнопке Рипер проигрывает миди-итем,в котором забита автоматизация громкости с плавным увеличением.

Все равно я не понимаю,почему нельзя на Ямахе регулировать общую громкость-если треки работают в режиме соло.
В конце концов можно играть потише вначале.




аватар: And


Нашел в Reaper команду задержки: Wait

Теперь можно и экшен делать




аватар: And


Создал 2 экшена для трека 1.

Track 1 Vol +5 s.ReaperKeyMap
В течении 5 секунд увеличивает громкость в треке 1 с -50 db до 0 db, не зависимо от того в каком положении находился фейдер громкости.
Track 1 Vol - 5 s.ReaperKeyMap
В течении 5 секунд уменьшает громкость в треке 1 c того уровня на котором находился фейдер громкости на 50 db вниз.

Это скриншоты части действий.

Для других треков можно сделать то же самое, всего лишь поменяв вторую команду в коде
Трек: Select track 01
на нужный вам трек.

При длительном тестировании оказалось что экшен работает только до перезагрузки Reaper, так как в нём может быть до 64 команды (читайте далее).

Хотелось бы ещё конечно сделать чтобы эти два экшена запускались одной кнопкой, которая при увеличении звука подсвечивалась, а при уменьшении гасла. (Типа как кнопка соло). Может знаете как это реализовать ?




аватар: vegas


Всё правильно "И переключением дорожек и происходит смена солирующего инструмента". Либо плавное добавление,- например арпеджиатора.
Только включать и выключать эти треки с VSTi плавно надо без резких перепадов звука - нажатием на кнопку, а не мышкой двигая фейдер громкости на том или ином треке.

Теперь стало понятно :)
Действительно, управлять громкостью канала с PSR-ки по midi — как-то не очень. У меня клавиатура M-Audio, в ней такая фишка предусмотрена.
В любом случае, молодец, что разобрался!




аватар: vitalker


Автор, может удобнее было бы через SWS Cycle actions? Вот, хороший видеоурок: https://www.youtube.com/watch?v=tK3mPTgTGok




аватар: And


Согласен. Через SWS Cycle actions было бы лучше. Я тоже об этом уже думал. Но пока ещё надо мне вникнуть и понять всё это дело.




аватар: And


Попробовал создать простейший цикл с плавным понижением громкости 1-го трека на 50 db. Однако понижение выполняется моментально.
Видимо команда Wait внутри цикла не выполняется.

Делал ещё несколько других вариантов с командой Wait. Во всех случаях команда эта в цикле игнорируется.




аватар: And


Интересная особенность.
При создания экшена в котором было около 100 команд - экшен мог работать до закрытия Reaper.
После нового открытия Reaper в экшене оказалось всего 64 команды.
Пришлось экшен составлять из нескольких экшенов для сокращения числа команд.

Вот собственно скриншоты готовых экшенов.

Плавное увеличение на 10 db за 1 сек

Плавное уменьшение на 10 db за 1 сек

Плавное увеличение громкости трека 1 на 50 db за 5 сек

Плавное уменьшение громкости трека 1 на 50 db за 5 сек

Один цикл для двух команд выполняющихся поочерёдно.
Этот цикл можно назначить на одну кнопку.

Вот собственно сама кнопка для трека 1

Здесь можно её скачать.В формате png, в формате xcf послойно для редактирования в Gimp и в формате psd послойно для редактирования в фотошоп.

1_toolbar icons to Reaper 90-30

Файл 1.png надо скопировать в папку toolbar_icons
В моём случае путь к папке такой
C:\Users\Andrey\AppData\Roaming\REAPER\Data\toolbar_icons

Вот результат

Ёщё бы хотелось усовершенствовать цикл так чтобы при минимальной громкости кнопка была серой, а при нормальной громкости жёлтой. То есть кнопка с условием (State) on off. Может знаете как это сделать ? И благодарю всех за коментарии.




аватар: vitalker


Add step отвечает за это, только оно действует так: сначала идут действия до ! step(то есть 1 раз кликнуть на кнопку), после ! step будут действия, которые выполнятся после второго нажатия на кнопку. "! step" можно добавлять n-ное количество раз.




аватар: And


Да это понятно, благодарю. На скриншоте выше это видно. Только какая команда или алгоритм меняет иконку кнопки ?
Эту команду, или несколько команд можно было бы поставить в конце каждого шага, после последней команды -10 db smoothly и после последней команды +10 db smoothly когда фейдер останавливается в крайних положениях.




аватар: vitalker


Хм, вряд ли можно менять иконку. Вам лучше спрашивать на оф.форуме.




аватар: And


Изменение вида иконки графической возможно, если экшены и циклы заменить скриптом который имеет статус (on/off).
Скрипт добавляется в Reaper следующим образом:

https://www.youtube.com/watch?v=CuOd7OKud_Y

На любой скрипт имеющий статус (State on/off) можно назначить иконку графическую в тулбаре.
Иконка (90*30), имеет левую, центральную и правую часть.
При создании иконки для скрипта со статусом (on/off) цвет левой, центральной и правой части иконки следует сделать разными по цвету.
При состоянии on иконка будет иметь вид правой части
При состоянии off иконка будет иметь вид левой части




аватар: vitalker


Мне, и наверно вам, это было известно уже раньше. Я же говорил о количестве состояний, превышающем 2, поэтому предложил обратиться за помощью на оф.форум.

Центральная иконка показывает кнопку в момент наведения курсора на неё, но без нажатия.




аватар: And


Всё таки удалось ещё более разобраться.
Получилось следующее.
Иконку в моём случае лучше использовать такую:

При состоянии скрипта off иконка будет иметь вид левой части (жёлтая).
Фейдер громкости при этом в исходном состоянии (в данном случае - 0 db).

При состоянии скрипта on иконка будет иметь вид правой части (серая).
Фейдер громкости при этом в крайне левом
(запрограмированном в Custom Action Tr1-) положении.

Что касается кода, то в моём случае простейший вариант, это скрипт со статусом (on/off) , в котором выполняется команда запуска цикла, созданного ранее. Команда эта прописана в первой строке скрипта. Цикл состоит из пользовательских экшенов, которые в свою очередь также состоят из других пользовательских экшенов и команд.Скрипт с расширением .eel. Код скрипта следующий:

Main_OnCommand(NamedCommandLookup("_S&M_CYCLACTION_2"), 0);
get_action_context(#fn, sec, cmd);
state = GetToggleCommandStateEx(sec, cmd);//Current State
SetToggleCommandState(sec, cmd, state <= 0 ? 1 : 0);//Change State (ON/OFF)
RefreshToolbar2(sec, cmd);

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

В принципе получилось то, что хотел.

1+-

Благодарю всех за коментарии.




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

Опрос

Реально ли обойтись 1-ой хорошей драм-машиной/семплером, 1-им универсальным синтезатором и набором базовых эффектов?
Да, вполне
75%
Ничего хорошего из этого не выйдет
25%
Всего голосов: 152