Bidule и создание любой сложности модуляции с любым параметром

Aleksandr Oleynik

Well-Known Member
16 Янв 2007
26.360
19.913
113
62
Киев
Решил поделиться некоторыми наработками упрощающими жизнь.
Достаточно не простая в изучении программа - Bidule
Но познакомившись с её основным функционалом уже трудно без неё и делать что-то.
Я расскажу и покажу как с её помощью получить, например - управляемое (по скорости) от усилия нажатия на midi клавиши Тремоло.
Ну вот понравился мне органчик в Korg M1, а ну нет там возможности такой эффект сотворить как сделали в той-же библе под Kontakt Vintage Organs - там в сетингах можно повесить на Aftertouch - Rotor Speed, правдва тоже совсем не так как я хочу чтобы это работало.

Вот и расскажу как я это в Bidule сделал.
Демку программы, и стэндэлон и плагина, можно скачать здесь -
http://www.plogue.com/downloads/#bidule
пишут, что до 15 декабря будет работать абсолютно полноценно.
После 15-го наверняка появится дэмка со следующим периодом, так что можно попробовать и решить - на сколько нужна эта программа в хозяйстве.
Я использую и Стэндэлон и плагины, плагины использую в Рипере, но прелесть в том, что сделанный в стэндэлон-е проект прекрасно открывается и в плагинной версии и наоборот.
Считаю, что плагин вы поставили, ReWire отключили (а то она будет в этом режиме открываться) -
ReWire01.jpg


И путь к вашей папке, например VST плагов, указали -
VST01.jpg


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

В проекте я буду использовать всего два плагина, KORG M1 и Plug and Mix-овский PM-TremoloPan. Вы можете тоже повторить с любыми другими Синтюком и внешним или внутренним (синтезатора) Тремоло.

Загружаем на треке в инсёрт плагин Bidule, по скольку я рботаю в Reper-е, то для него нет разницы VST или VSTi плагин, так как нет деления на аудио или миди треки. В хостах где это разделено, нужно выбирать VSTi, ну и я так выберу
insert01.jpg


Открывается окно плагина по умолчанию (которое можно и поменять, если нужно) -
VSTi01.jpg


В окне всё просто - входной и выходной модуль Bidule Plugin_0 в котором есть такое кол-во ходов и выходов, которое есть у выбранной версии Bidule.
В данном случае два аудио входа-выхода и один вход-выход миди ---- они принимаются с трека и туда возвращаются.
Модуль Mixer_0 - это по умолчанию открывающийся 16-и канальный моно микшер, который можно заменить или вовсе убрать, если не нужен.
 

Вложения

Для начала, по скольку нас больше будет в этом примере интересовать MIDI я покажу и расскажу что с этим midi в Bidule происходит и что можно делать (да всё что угодно, на самлм деле :)) -
У меня к компу подключена Акаевская клава и я покажу как в Рипере её включить и в Бидюле подключить один из модулей Мониторинга и убедиться, что все её команды принимаются по midi входу.
Кстати, на закладке Palette собственно и находятся все доступные в Bidule модули.
В видео gif-е видно, как я и ноты нажимал и Channel Pressure задействовал, давя на клавиши, и CC 01 контролер крутил (это Mod Wheel отвечающий как правило по умолчанию за вот ту самую скорость вибрации), и Pitch Bend колёсико, да и ещё там ручки всякие... - все сигналы в Bidule по midi входу заходят!!! -

Akai%20002.gif


Мониторинг в Bidule, это отдельная тема. По мимо того что модулей Мониторинга всяких достаточно, у каждого модуля по правой кл мыши можно вызвать упрощённый индивидуальны мониторинг его параметров.
Это очень важно, так как при построении какой-то схемы вы всегда можете убедиться в том, что то, что вы задумали - происходит!

В следующем фрагменте я покажу как подключить в Bidule модуль внешнего VSTi Korg M1 и убедиться, что всё работает (звука в gif анимации нет, но в конце я слышу как в мониторах звучит синтюк, верьте! :punk:) -

Akai%20003.gif


Кстати, какая-то вибрация зависящая от Channel Pressure есть и в M1, но она меня совершенно не впечатляет, поэтому сделаем свой модуль Тремоло, скорость которого будет зависить ТАК КАК НАМ ХОЧЕТСЯ от нажатия на клавиши.

Для начала я покажу на сколько продвинутый набор в Bidule различных модулей, на примере того, что отсортирую входной midi сигнал и пошлю на VSTi только note on/of, команды педали сустейна и пич бэнд, и сделаю ещё один midi канал из входящего, в который отправлю только CC команды от колёсика модуляции и Channel Pressure сигнал (усилие нажатия на клаву).

Akai%20004.gif


Из мультика в общем понятно за что отвечает модуль midi фильтра Massage Filter, а за что CC Filter, ну и из названия почти сразу понятно.
 
  • Like
Реакции: Magnet, Empires и lalaigor
На следующем видео я демонстрирую проверку того, что по двум каналам мной созданным идут только нужные мне midi сообщения -

Akai%20005.gif


На самом деле очень важно делать вот такие Мониторинговые проверки, чтоб не запутаться.
Дальше я переключаю Синтюк с прямого подключения на канал после CC Filter_0 и переименую его для ясности в CC Filter to VSTi, делаю такой фильтр исключительно для того, чтобы в VSTi попадали только те midi сообщения, которые мне нужны, а то у меня были случаи когда midi файлы с партитурой начинали мне и банки в синтюке пеключать и ещё что-то делать и нужно было это всё вычищать...., а так - поступает только то, что нужно мне!, а нужно мне и сделано - только ноты, пич бэнд и CC контролер отвечающий за педаль сустейна
Кстати, Мониторинг ещё удобен тем, что подключив модуль Монитора к midi входу вы всегда можете ТОЧНО выяснить какой сигнал посылает та или иная крутилка, та или иная педаль и тогда уже точно это использовать. -

Akai%20006.gif


Дальше я после M1 ставлю плагин Тремоло (зажимая на клаве Alt и перемещая модуль так, чтобы его входы-выходы нависли над местом, куда хотите его воткнуть, очень легко его можно вставить в разрыв) -

Akai%20007.gif


Дальше я по слуху определяюсь с параметрами плага DEPTH и WIDTH и ищу диапазон параметра SPEED в котором я бы хотел чтобы работал мой контролер усилия нажатия на клавиши Акая.
Мне так вот кажется, что от 4-х до 9,5 самое то, а значит мне для начала этот диапазон нужно ограничить. Как это сделать в следующей серии -

Akai%20008.gif
 
  • Like
Реакции: Magnet, Empires и lalaigor
Затем мне нужно собственно создать канал управления параметорм Speed в этом созданном диапазоне, и я хочу чтоб это управлялось при изменении усилия нажатия на клаву и хочу чтоб также работало стандартное колесо модуляции.
В Bidule есть модули отвечающие за преобразование всего чего угодно (ну почти) во что угодно. Вот я и воспользуюсь одними из них и превращу MIDI сигнал Channel Pressure (усилие нажатия на клаву) и сигнал контролера CC 1 колёсика модуляции (который я отфильтровал в модуле CC_Filter_1 (переименую ка я его в CC_Filter Modulation) в DATA сигналы. Искать эти модули стоит в Building Blocks>MIDI> и все они Extractor-ы
Мне нужно два - CC Extractor и Channel Pressure Extractor соответственно. К соответствующим местам их и подключаю, а их data выходы оба подключаю на модуль отвечающий за формирования модуляционного управляющего сигнала -
Parametr Modulator.
В общем почти всё готово, осталось обучить ручку SPEED модуляционным изменениям в модуле Parametr Modulator, который я переименую в PM Tremolo, ну так.... чтоб потом вспомнить зачем я его делал. -

Akai%20009.gif


В следующем фрагменте покажу как линковать параметры друг к другу. Происходит это в виртуальной плоскости, без видимых связей :) и линковать таким образом можно всё что угодно...
Также я оба плагина подключу к синхро сигналу Хоста - Sync to по правой клавише мыши на модуле плагина. Также нужно НЕ ЗАБЫТЬ и настроить правильно диапазон изменения параметров в модуле Модуляции, в PM Tremolo переименованном. По умолчанию он там от минус одного до плюс одного, но нам нужно от 0 до 1, потому как параметр Speed, которым мы хотим управлять, имел в настройках (которые мы правили выше на 0.4 - 0.95) Min Value = 0 и Max Value = 1 (Ну и в конце я проверил работу штатного колёсика модуляции на Акаевской клаве - оно теперь работает как я хотел - меняет Скорость от 4-х до 95-и) -

Akai%20010.gif


Дальше я проверяю как же работает изменение Скорости тремоло от усилия нажатия на клавиши - работает, но не совсем так, как я хочу!!! А хочу я, чтоб менялась скорость не такими рывками, а плавно и не по линейному закону, а по нужной мне параболе, которую я ещё и подбиру как мне нужно....
Вот два модуля в цепи после Channel Pressure Extractor_0 мне и нужно вставить.
Один это Smoother_0 - и он отвечает за сглаживание сигнала во времени (по сути растягивании его) - Его параметры нужно подбирать на слух - т.е. на сколько нужно сгладить рывки.... - я поставил в итоге 1000 ms
А второй модуль - это модуль формулы в которой собственно и делаю математическую параболу, какую и как она будет выглядеть, можно потренироваться вот тут -
http://rechneronline.de/function-graphs/
В общем я написал такую формлу - x^(1/2)
Всё это проверяя на слух как звучит!

Akai%20011.gif


Ну и всё!

Аааааааа, к первому посту приложу файл проекта Bidule на всякий, чтоб вы могли сверяться...
 
  • Like
Реакции: Magnet, Empires и lalaigor
Спасибо за тему. меня в ней смущает секвенсер..прописывать цифрами высоту питча :unsure:
 
Спасибо за тему. меня в ней смущает секвенсер..прописывать цифрами высоту питча :unsure:
Не понял ремарки ни про питч, ни про секвенсор.
Поясните.
То, что я рассказал и показал будет работать абсолютно в любом Секвенсоре!
Bidule это мультиплатформенный VST/AU плагин - грузите в любой секвенсор...
 
Bidule не только плагин, но и самостоятельный хост.
Ну да, я об этом в начале написал.
И что?
Я так и не понял при чём тут прописывание цифрами высоты тона?????
Я было подумал, что вы не любите Рипер как секвенсор.
В общем поясните.
 
Я имел в виду модуль секвенсора в самом Бидьюль, забыл уточнить. Про Reaper же слышал только хорошее.
 
Возможно, у меня купленная версия....
Но по упражняться можно и в стэндэлоне, даже удобнее....
 
а ну да, них на сайте написано

** The plug-in version of Bidule will only work for registered users.

Make sure to install and register the standalone version before attempting to use the plug-in version
The plug-in version of Bidule does not contain a bridge, it will only load plug-ins using the same architecture as itself - See more at: http://www.plogue.com/downloads/#bidule
 
  • Like
Реакции: Aleksandr Oleynik
Я выложу этот-же проект для стэндэлона и расскажу чуть об отличиях в модулях входа-выхода. Но чуть посже.
 
При открытии моего проекта в Стэндэлон версии Бидюли, получим вот такую картинку -

Standalon01.jpg


В зависимости от установленной карты модули аудио входов-выходов будут у каждого свои (у меня это - ASIO HDSPe FX), но если вдруг откроется не ASIO, то их следует удалить и я покажу как и откуда они вызываются -

Akai%20012.gif


Но MIDI у нас получились оторванны, так как в Стэндэлон версии MIDI и AUDIO дивайсы разделены.
так что нам остаётся в проект добавить MIDI вход наших внешних клавиш и соединить его с модулями Message Filter и всё заработает как и в VST версии!

Akai%20013.gif


Вот и всё!

Ну и файл проекта в стэндэлоне -
 

Вложения

  • Like
Реакции: dyshambe
Извините, если в этой теме вопрос не уместен, более подходящей поиск не нашёл :rolleyes: Как в Bidule вот так сделать, как на картинке ниже ? Мне нужно аудио-реле или аудио-кроссфейд для двух аудио-сигналов, который бы при нажатии любой миди-ноты (Bidule висит плагином в рипере) переключался с одного входа на другой.

То есть:
нота отжата - активен вход 0
нота нажата (любая !) - активен вход 1, а после её note-off, чтобы снова переключалось на вход 0
Untitled.png


//UPD
Простите, уточнение: для двух стерео-сигналов реле или кроссфейд. В случае с реактором, как на картинке, понадобилось бы 2 реле просто, одно для L и второе для R.
 
Последнее редактирование:
В Bidule вы по сути создаёте это самое Аудио Реле сами из стандартных блоков.
Вариантов создать то, что вы хотите сотня.
Одна из реализаций вот -
Bidule%20Audio%20Rele01.gif

файл проекта для бидюли приложен -
Один раз сделав такую вот цепочку можно сохранить её как Группу и дальше использовать как одну ноду.
Модуляция (т.е. управление нотами поведением Микшера) тут скрытая, через линковку одного параметра к другому (повторюсь, цепочку и способ модуляции можно мспользовать очень разные) -
Bidule%20Audio%20Relay%20Modulation.png

PS: Если нужно чтобы переключение каналов шло через регулируемый фэйд - это также можно сделать. В общем-то в Bidule можно сделать очень многое, если не всё - зависит от времени, которое вы готовы на это потратить. ну и можно поискать у них на форуме готовые решения - их там тоже очень много.
[DOUBLEPOST=1425649663,1425645334][/DOUBLEPOST]Собственно с регулируемым Фэйдом на переключение -

Bidule%20Audio%20Relay%20Smooth.gif

И в атаче проект
[DOUBLEPOST=1425652122][/DOUBLEPOST]Следующая Анимашка - это созданная Группа (одна нода) из того, что я наваял -

Bidule%20Audio%20Relay%20Smooth%20Group.gif
И в Атаче группа - которую можно загружать и в Стэндэлоне и в плагине как одну ноду, подключить к ней два стерео канала аудио входа, один стерео выход и миди вход и всё будет работать -
 

Вложения

Последнее редактирование:
  • Like
Реакции: Vadim_K
Большое спасибо. Использую группу Audio Relay Smooth Group - работает как надо, но есть проблемы с логикой миди. Был бы признателен, если удасться их решить.

Проблема 1: в данном примере на второй ноте у реле активируются обе стерео пары.
1.png


Проблема 2: в данном примере первая нота включает вторую стереоапару, а вторая нота выключает вторую стереопару, и на ней снова активна первая стереопара, другими словами, вторая нота вызывает обратный эффект.
2.png


Я посмотрел, как устроено Ваша реле, но я пока только Реактором мыслю :) В Реакторе есть модуль Gate, который реагирует на note-on/note-off, на выходе 1 и 0. Вот в первом случае он бы на очень короткое время переключился бы на 0, а потом снова на 1, причём на настолько короткое время переключился бы на 0, что реле бы не успело переключится даже (по крайней мере щелчка не слышно было бы).
Во втором случае 1 бы продолжала висеть непрерывно после включения второй ноты. Видимо, здесь нужно как-то аналогично.
 
Последнее редактирование:
Я посмотрю.
В общем понятно, что нужно ввести некоторые блокировки. Но быстро не обещаю.
[DOUBLEPOST=1425856875,1425762034][/DOUBLEPOST]@Vadim_K, на самом деле вот эти возможные перехлёсты в нотах СИЛЬНО усложняют ситуацию. И если первый и второй случаи я как-то не очень сложно решить могу, то есть ведь и другие перекрытия, например когда нота нависает над той, что потом продолжается -
прийдёт две Note On и потом None off и микшер перебросится, а то, что нота продолжает звучать - это программа ни как знать не может.
В общем морока с этими перекрытиями нот ещё та - вариантов, которые нужно отслеживать Очень много и некоторые из них в лоб не решаемые.
Я внёс некоторое изменение в Группу - сейчас она работает как минимум без глюка при указанном первом варианте.
Второй вариант так как вы хотите работать не будет - т.е. вторая нота будет игнорироваться по причине того, что плагину всё равно, что есть перехлеснувшаяся нота, она всё равно отреагирует на Note Off первой ноты.
[DOUBLEPOST=1425895383][/DOUBLEPOST]PS: На сколько я понимаю логику того, как нужно сделать это реле - пока есть "звучащая" нота в пиан роле - активен один вход, как только ноты нет (перерыв между нотами) - активен второй вход.
Если это так, то нужно делать целый входной модуль сравнения какой именно Ноты приходять Note On и Note Off. Сейчас же программе всё равно - она "следит" только за самими контролерами Note On и Note Off.
И ещё одно - если управлять этим с внешней миди клавы, то нужно ещё учесть тот факт, что не на всех клавах есть Note Off (об этом узнал совсем недавно).

В общем отпишитесь с точным описанием логики реакции на приходящее MIDI и я переделаю плагин.
 

Вложения

Последнее редактирование:
  • Like
Реакции: Vadim_K
На сколько я понимаю логику того, как нужно сделать это реле - пока есть "звучащая" нота в пиан роле - активен один вход, как только ноты нет (перерыв между нотами) - активен второй вход.
Да, именно.

не на всех клавах есть Note Off (об этом узнал совсем недавно)
На моей есть. А как тогда ноты выключаются с этими клавами без Note Off ? По какому сообщению ?

Первый случай действительно решён, спасибо ! :) Второй случай... Если там действительно всё так не просто, то и ладно с ним. Первый случай был самый важный.

Но да, в целом логика именно такая, как Вы поняли. На самом деле, я предполагал, что всё будет просто, как в Реакторе, а тут вон как, столько логики нужно ради, казалось бы, простой задачи :) Поэтому и интересно, если есть клавы без Note Off, может и эта задача решается иначе в бидюле как-то.
[DOUBLEPOST=1425944457,1425924339][/DOUBLEPOST]
вариантов, которые нужно отслеживать Очень много и некоторые из них в лоб не решаемые
Нет, только этот второй случай с перехлёстыванием и тот первый случай, который Вы уже поправили. Других вариантов не будет точно.
 
На моей есть. А как тогда ноты выключаются с этими клавами без Note Off ? По какому сообщению ?
Есть клавы у которых Note Off - это Note On с Velocity=0 - и это понимают все DAW (должны понимать), но вот плагин это (если не задать специально) - не поймёт!

На самом деле, я предполагал, что всё будет просто, как в Реакторе, а тут вон как, столько логики нужно ради, казалось бы, простой задачи :)
Я не знаю как Реактор оценивает длительность ноты. Чтобы выстроить всю логическую цепочку правильно, нужно (как я писал выше) обрабатывать не просто Note On и Note Off, а КАЖДУЮ Ноту с этими параметрами.


Нет, только этот второй случай с перехлёстыванием и тот первый случай, который Вы уже поправили. Других вариантов не будет точно.
А как плагин должен реагировать на вот такой случай -
Note007.png

Сейчас программа переключение сделает по Note Off верхней ноты, и проигнорирует хвост нижней.
 
Уважаемый @Aleksandr Oleynik <нужно делать целый входной модуль сравнения какой именно Ноты приходят Note On и Note Off. >
Довелось мне поковыряться в Note on/off.
http://rmmedia.ru/threads/109361/#post-1721171
Целый модуль не обязательно, достаточно ввести "маску" на все ноты - 128 байт( или массив или строку). Пришло Note On - взвели байт по номеру ноты('+' например), Note Off - погасили пробелом. Для принятия решения по переключению достаточно просто пробежаться циклом по маске, есть хоть один взведённый байт - 1 вариант, нет - 2-й вариант.
 
  • Like
Реакции: Vadim_K
Я знаю как это можно сделать в программах с записью кода прямо, типа JS плагина в Рипере. Я ни когда этого не делал в Bidule - в нём это делать нужно при помощи стандартных блоков функциональных.
Я же не сказал, что сделать нельзя - просто морока. Нужно ещё динамические сигналы в триггерный переворачивать, абсолютные в относительные.
 
Я не знаю как Реактор оценивает длительность ноты.
Да, это маленький неразборный модуль с первичного уровня. Как он работает, не посмотреть, разве что описание.
The Gate Module is a Polyphonic Event source for MIDI Note On and Note Off events. A Note On event sets the output to a value determined by the key velocity. The range of the output values to which the incoming range of MIDI velocities (from no velocity (Note Off) to maximum velocity) is scaled, is set with the Min and Max edit fields in the Function page. The resolution is such that 128 steps fit into the interval set in the Function page, [Min …. Max]. When a Note Off event arrives at the parent Instrument's MIDI In, the Gate Module sends an Event with the value "0" (a Gate Off Event), independent of the "Min" and "Max" settings in the Function page. If velocity sensitivity of your Instrument is to be disabled, the "Min" and "Max" values should be set to the same value.

Application
The Gate Module is a key Module in every synthesizer that reacts to incoming MIDI keyboard signals. In the simplest implementation, the Gate Module is connected to the "G" (gate) input port of an Envelope Module. The output of the Envelope Module is then multiplied with the oscillator source signal which is then sent to the output, perhaps after further signal processing with filters and effects. In such a case pressing a key on your MIDI or Computer keyboard triggers the envelope, "letting through" the oscillator signal to the next part of the Structure. Releasing the key releases the envelope, "closing" the path of the oscillator signal to the next part of the Structure. The Gate Module is also used in sampler instruments to trigger Sampler Modules.


В данном случае важны только 0 и >0, промежуточные значения велосити не важны.

[DOUBLEPOST=1426015877,1426015716][/DOUBLEPOST]
Есть клавы у которых Note Off - это Note On с Velocity=0 - и это понимают все DAW
"from no velocity (Note Off) to maximum velocity)
Хммм... То самое что-ли.

А как плагин должен реагировать на вот такой случай -
Note007.png
Такого случая не будет точно, его можно не рассматривать. Будут только те 2 случая выше. Кстати, в Реакторе - этот случай (который Вы привели в пример) как раз такой самый, плохой :) После окончания верхней короткой ноты - на выходе модуля 0. То есть, реактор забывает, что нижняя нота ещё нажата. Но, при всём при этом, мой "второй случай" он держит корректно.
[DOUBLEPOST=1426017985][/DOUBLEPOST]Да и ещё. Выше в описании модуля Gate реактора написано, что он полифонический, но на это не обращайте внимания (ясно, что при полифонии он держит все возможные случаи, так как тогда он отдельно для каждой ноты "запоминает", что нажато). Но я использую этот модуль в режиме моно и я понимаю, что бидюля также обрабатывает. Другими словами, если доделать обработку "второго случая" - будет аналог модуля реакторовского Gate в моно.
 
В данном случае важны только 0 и >0, промежуточные значения велосити не важны.
А я промежуточные и так не использую - я всё велосити превращаю в 127
Просто нужно потом не забыть в Note Off превратить в плагине приходящие Note On с Velocity=0. Но это очень просто.

"from no velocity (Note Off) to maximum velocity)
Хммм... То самое что-ли.
Да!

Такого случая не будет точно, его можно не рассматривать. Будут только те 2 случая выше. Кстати, в Реакторе - этот случай (который Вы привели в пример) как раз такой самый, плохой :) После окончания верхней короткой ноты - на выходе модуля 0. То есть, реактор забывает, что нижняя нота ещё нажата. Но, при всём при этом, мой "второй случай" он держит корректно.
Это происходит по простой причине - плагин не понимает длительность ноты, он её вычисляет по дистанции между Note On - Note Off.
Ну да ладно - второй ваш случай я вроде победил, но тут-же нарисовался ещё один вариант проблемный, который если вдруг возникнет - рушит работу плагина в корне, и плагину нужно делать РЕСЕТ - иначе он просто не работает вообще!
Вот когда возникает Note Off у двух нот одновременно -
Note008.png


Плагин в ходе вычислений не видит двух пришедших Note Off - только один.
И если в случаи первого вашего варианта - где ноты в стык и получается, что одновременно приходит сигнал Note Off и Note On я разделил их простым микро дилэем на сигнал Note Off, то два Note Off разделить я не знаю как, если честно, пока. Вот с таким вариантом нот пока обозначился тупик. Кстати, я такой вот зависон плагина спокойно ловлю и при одновременном нажатии или снятии нескольких нот на внешней клаве - синхронно сделать удаётся не каждый раз, но сама возможность такого глюка - ОГОРЧАЕТ!
 
Последнее редактирование:
  • Like
Реакции: Vadim_K
Вот когда возникает Note Off у двух нот одновременно
Так... А это появилось именно после решения второго случая что-ли ? Потому что я сейчас гоняю версию с решённым первым случаем (со вторым вы пока не выложили), но у меня ничего не зависает в такой ситуации.
[DOUBLEPOST=1426026715,1426025750][/DOUBLEPOST]Ну точно, я не могу такой глюк поймать, как ни стараюсь... У меня ничего не зависает при одновременных Note Off. Неужели побочный эффект решения второго случая ?
 
Да, это проблема возникает при решении второго случая. Причина - чтоб решить ситуацию при которой не дождавшись Note Off приходит ещё один Note On от второй уже ноты, нужно ловить кол-во приходящих подрят Note On и Note Off - и вот если вместо двух Note Off, при их одновременном приходе, детектор фиксирует один Note Off - его крышу срывает напрочь. Ну как это может быть - что Note On пришло два, а Note Off - один - он будет ждать второго и если прийдёт вместо него ещё один Note On - труба.
Кстати, одновременный приход двух Note On также вызывает ступор у системы детектора!
Я попробую спросить как с этим быть на оф форуме Bidule - но не уверен, что решение есть.
[DOUBLEPOST=1426080494,1426032973][/DOUBLEPOST]Я нашёл решение.
Пока сделаю для полифонии 16 нот, если нужно будет больше - скажете, тоже можно сделать.
Похоже, что теперь в общем всё равно как ноты расположены и какие из них начинаются или заканчиваются вместе - плагин работает так - при возникновении первой из серии пересекающихся нот Note On - выбирается один из выходов, при возникновении ПОСЛЕДНЕЙ из серии пересекающихся нот Note Off - переключается на второй канал.
Оттестирую как следует и выложу.
[DOUBLEPOST=1426093577][/DOUBLEPOST]Тестирование показало, что делать нужно сразу для всех 127 нот.... Это чуть затянется.....
 
Ок, понял... А вроде всего-лишь аудиореле, казалось бы.
 
А так всегда.... Простая казалось бы задача, если решать её как следует и учитывать абсолютно все нюансы, превращается в не простую.
[DOUBLEPOST=1426153903,1426102246][/DOUBLEPOST]Выкладываю группу. Вроде проверил все возможные варианты - работает корректно.
Можете хоть все 127 нот поставить с синхронным началом и концом в пианроле, или с хаотичным перехлёстом -
плагин будет работать так - по первой ноте Note On будет перебрасывать (через регулируемый фэйд) вход на один канал, по последней из перехлестнувшихся нот Note Off - перебросит вход на второй стерео канал. Если ноты стоят одна за другой в стык - он этот "разрез" будет игнорировать.
Проверяйте!

PS: На самом деле основная сложность во всей реализации возникла в том, что в случаи если ноты стоят одна над другой и их начала и/или концы ТОЧНО совпадают, то Ни Один из преобразователей MIDI To Parametr не видит ВСЕ эти ноты отдельно, видит только как одно сообщение Note On и/или Off. А если нам нужно понимать, что сколько Note On пришло, то столько в конце концов и Note Off должно тоже ОБЯЗАТЕЛЬНО прийти - нужно принимать каждую ноту и знать о том, что она пришла-ушла.
Покопаетесь в плагине - увидите на сколько заморочисто пришлось эту ситуацию решить.
На оф форуме не спрашивал, сам решение нашёл - возможно и есть более элегантное.
[DOUBLEPOST=1426155106][/DOUBLEPOST]Не смотря на то, что плагин ДОЛЖЕН работать в любых ситуация теперь корректно, тем ни менее я решил вынести кнопку Ресета плагина на интерфейс Группы.
В общем v3 -
 

Вложения

  • Like
Реакции: Vadim_K
Пробовал сразу V3. Извините, но работает плохо :( В первую минуту добился того, что реле стало работать инвертированно - ноты нет, работает первый вход, нота есть - работает второй вход (наооборот). Что за кнопка Ресета на интерфейсе группы и где она, я не вижу (можете скриншотик показать ?). Потому перезагрузил всё, тогда снова нормально работает, но потом снова вечную инверсию поймал и ещё потом также ловил.

Позже научился вызывать инверсию мануально, вот самый простой способ. В Рипере создать айтем в 4 такта, в нём ноту на всю его длину и проиграть этот айтем в петле. Если первый луп продержится, то во второй раз инверсия гарантирована. Но это такой верный способ совсем, но я её ловил и короткими нотами.
rpp.png

[DOUBLEPOST=1426189093,1426188622][/DOUBLEPOST]Да, очень легко и часто вечная инверсия ловится((
 
Капец.
Буду разбираться - тут уже спортивный интерес добиться результата.
[DOUBLEPOST=1426198888,1426190134][/DOUBLEPOST]Я боюсь, что отловить все возможные "не определённости", которые возникают при той-же петле, да ещё и с таймингом равным ноте - будет если не возможно, то крайне тяжело.
Рипер выдаёт при таком вот стыке петли и начала и конца ноты, не всё время одно и то-же --- у меня он даже притармаживает при этом.

Кнопка на морде Ноды-Группы -
Reset%20Plugin.png



[DOUBLEPOST=1426263275][/DOUBLEPOST]

Проверяйте новый -
Кроме исправлений добавлен регулятор дилэя Note On.

AudioRelayGui003.png


В общем именно его величина отвечает за то, успевает ли плагин отследить на стыках и повторах после Note Off приход Note On.
Мои эксперименты дали мне значение 10 ms, кто-то может захочет попробовать уменьшить или увеличит.
В любом случае - если плагин начал вести себя не адекватно, перегружать его не нужно - жмём на Reset Plugin и всё опять будет работать нормально.
 

Вложения

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

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