DynEQ интересный. Срашненький такой .. )есть интересные
/**
* JSFX Name: Note Off to Note On
* Description: Filtr all note On and converts Notes Off to Note On.
It's usefull to elaborate release fase in a sound.
* Author: X-Raym. Modificated by Antonio from rmmedia.ru
* Author URI: http://www.extremraym.com
* Links:
Forum Thread http://forum.cockos.com/showthread.php?t=181105
Screenshot https://monosnap.com/file/jSODyOpFNH9W4VxgBW6dByhlGfnAKS.png
* Donation: http://www.extremraym.com/en/donation
* Licence: GPL v3
* REAPER: 5.0
* Extensions: None
* Version: 1.0
*/
/**
* Changelog:
* Note Off to On v.1.0 by Antonio
* v1.0 (2017-11-19)
+ Initial Release
*/
desc:Note On under 127 velocity to Note Off And all Note Off to Note On
in_pin:none
out_pin:none
slider1:0<0,16,1{Any,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}>Input Channel
////////////////////////////////////////////////////////////////////////////////
@init
statNoteOn = $x90;
statNoteOff = $x80;
////////////////////////////////////////////////////////////////////////////////
@slider
inChannel = slider1 - 1;
////////////////////////////////////////////////////////////////////////////////
@block
while
(
midirecv(offset,msg1,note,vel) ?
(
// Extract message type and channel
status = msg1 & $xF0;
channel = msg1 & $x0F;
// Is it on our channel?
channel == inChannel || inChannel == -1 ?
(
// Is it a note event?
status == statNoteOn ?
(
// If note is good
vel <=127 ? (
vel = 0;
msg1 = statNoteOff;
);
);
// Is it a note off event?
status == statNoteOff ?
(
msg1 = statNoteOn;
);
);
midisend(offset,msg1,note,vel);
1; // Force loop to continue until all messages have been processed
);
);
@AbramoV, На всякий случай оставлю здесь плагин который я переделывал под свои задачи, очень схожие с твоими. Может натолкнёт на мысль.
Код:/** * JSFX Name: Note Off to Note On * Description: Filtr all note On and converts Notes Off to Note On. It's usefull to elaborate release fase in a sound. * Author: X-Raym. Modificated by Antonio from rmmedia.ru * Author URI: http://www.extremraym.com * Links: Forum Thread http://forum.cockos.com/showthread.php?t=181105 Screenshot https://monosnap.com/file/jSODyOpFNH9W4VxgBW6dByhlGfnAKS.png * Donation: http://www.extremraym.com/en/donation * Licence: GPL v3 * REAPER: 5.0 * Extensions: None * Version: 1.0 */ /** * Changelog: * Note Off to On v.1.0 by Antonio * v1.0 (2017-11-19) + Initial Release */ desc:Note On under 127 velocity to Note Off And all Note Off to Note On in_pin:none out_pin:none slider1:0<0,16,1{Any,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}>Input Channel //////////////////////////////////////////////////////////////////////////////// @init statNoteOn = $x90; statNoteOff = $x80; //////////////////////////////////////////////////////////////////////////////// @slider inChannel = slider1 - 1; //////////////////////////////////////////////////////////////////////////////// @block while ( midirecv(offset,msg1,note,vel) ? ( // Extract message type and channel status = msg1 & $xF0; channel = msg1 & $x0F; // Is it on our channel? channel == inChannel || inChannel == -1 ? ( // Is it a note event? status == statNoteOn ? ( // If note is good vel <=127 ? ( vel = 0; msg1 = statNoteOff; ); ); // Is it a note off event? status == statNoteOff ? ( msg1 = statNoteOn; ); ); midisend(offset,msg1,note,vel); 1; // Force loop to continue until all messages have been processed ); );
И ссылка на документацию, на всякий случай.
@AbramoV, как вариант, при отправке MIDI команды Note ON, дополнительно в индексную переменную CH(Note) прописать номер текущего канала. Далее, при отправке команды Note Off, использовать значение канала из переменной CH(Note).
Тогда независимо от номера канала, который мог измениться до команды Note Off, ноты будут закрываться на том канале на котором были до этого открыты.
ЗЫ: индексная переменная в данном случае - это массив, таблица. Порядковый номер которой - это номер ноты, а значение - номер канала нажатой ноты. Поэтому, если номер канала даже изменится, то команда отпустить ноту пройдет именно по тому каналу по которому она и была нажата. Значит ноту можно будет отпустить сильно позже после того как канал поменялся.
Индексные переменные - это массив. Массив у плагина один. Поэтому если нужно организовать несколько массивов используется смещение. Стандартно индексаная переменная вылядит такНо, ноту не знаю как запомнить. Вероятно здесь мне и понадобится эта переменная. Объясните пожалуйста, если не сложно, как ее применить?
p.s. Долго пытался понять почему не принимает note off, и потом понял, что моя клавиатура выдает note on с velocity = 0.
notes_ch[note_nr]
). Иначе потом появляются глюки.desc: Chanel Editor
//Belovw
//V1
slider1:1<1,16,1>Chanel
@init
CH=0;
@slider
Chanel=Slider1-1;
@block
while (midirecv(offset,msg1,msg2,msg3))
(
msg1==$x90 && msg3!=0 ? (
CH[msg2]=Chanel;
midisend(offset,$x90+Chanel,msg2,msg3));
msg1==$x80 ? (
midisend(offset,$x80+CH[msg2],msg2,64));
msg1==$x90 && msg3==0 ? (
midisend(offset,$x90+CH[msg2],msg2,msg3));
) ;
x(n)
CH(n)
A(n)
Это вопрос не ко мне.Так задумка в том, чтобы плагином каналы переключать или с контроллера?
Видимо плагином.Есть слайдер, отвечающий за смену канала, и нужно отправлять note off на предыдущий канал.
Странная конечно реакция. Но вы тестируйте. Может чего натестируете ))
т.е. про лайк это не шутка была? Ок. Тестировать мне некогда и лайки не буду забирать. )Странная конечно реакция. Но вы тестируйте. Может чего натестируете ))
Моя цель - переключение артикуляций с помощью миди каналов. Именно каналами, лично мне так очень удобно оказалось. Ноты с MIDI каналами можно фильтровать, выделять, менять на другой канал (артикуляцию) и делать что угодно с каждой артикуляцией. Вначале увидел sws map input экшн, но он не работает в режиме record. Reaticulate не может окрашивать ноты и присваивать им канал, об этом спрашивал на форуме vi control (note off у него, кстати, также работает как в этом коде). И наконец открыл для себя js плагин, и у него хотел сделать note off, но только не при смене канала, а когда будет нажата клавиша на следующем канале. Теперь я с комфортом могу их переключать в режиме записи. Кстати, нашел плагин, который переключает не только каналы, а вместе с ними и CC контроллеры. Теперь все выглядит еще интереснее:@belovw, хаха. Щас, протестировать сначала надо.
Так задумка в том, чтобы плагином каналы переключать или с контроллера? Если плагином, то это наверно пресеты на каждый канал надо создавать и их на хоткеи назначать?
Да!@AbramoV, то есть теперь всё работает именно так, как вы и хотели?