Фактическое нажатие кнопок на контроллере без собственно "физического" нажатия.
F0002029 0305 12000000 6601
__ 0x F7 (x = 1 - нажать, 0 - отпустить)
23 — learn
24 — view
25 — user
26 — fx
27 — inst
28 — mixer
Даже симуляция нажатий этих кнопок при любом шаблоне входит в automap universal template.
30 — transport (не смотря на отсутствие "отзывания" при отпускании кнопки - повторное нажатие работает только после значения 0, которое "отпускает" эту кнопку)
кнопки PAGE, так же, как и при физическом нажатии, при значении 1 контроллер "с разгоном" шлёт повторно до тех пор, пока не придёт значение 0 (отпустить):
2E — ◀ page left (LH)▲
2F — page ▶ right (LH)▼
39 — ▲page up (RH) — cудя по посылаемому CC#, контроллер жмёт и держит левосторонний ◀ page left▲ а вот при 0 отпускает правосторонний ▲PAGE UP (т.е. отпускает как при сочетании preview+ ◀ page left).
По началу, экран моего ZeRO MkII от этого SysEx`начнал сходить с ума: сначала замерцал очень быстро текст, затем с правой стороны экрана текст начал ГРАДИЕНТОМ затухать (!!) – будто какая-то ЭМ-наводка…
3A — ▼page down (RH) — судя по посылаемому CC#, контроллер ОПЯТЬ жмёт и удерживает ◀ page
left▲ при значении 1, а вот при значении 0 — отпускает ▼page DOWN (т.е. как отпускание при сочетании preview+ page ▶ right); Но при этом страницы переключает
вправо — Короче, не только кнопки изменения октавы/канала/траспозиции шлют один и тот же CC#, но даже кнопки page…
С preview (который и тот почему-то включается двумя SysEx`ами, по номерам 21h и 22h, а выключается только одним – 21h) у всех page CC# запутано так же, как и при физическом нажатии. Отсюда снова
вопрос к обладателям
SL MkII с двумя парами кнопок page:
Что шлют кнопки page с правой стороны при шаблонах Ableton Automap и Automap Universal — неужели то же, что и при симуляции? Раз так, то мне стоит ещё пару изменений внести в Device Definition для виртуальника…
И ещё второй вопрос, а есть ли вообще в SL MkII кнопка 'preview'? Или вместо неё две кнопки ◀ octave ▶? Может на SL MkII по этим двум SysEx`ам должна переключаться ◄октава►?
31 — кнопка "WRITE"
32 — кнопка "global"
33 — кнопка "edit"
34 — кнопка "quickmenu" — Ха! Теперь можно не нажимая кнопку quickmenu на самом контроллере, сделать относительную транспозицию (к примеру, на -6 от текущей):
F0002029 0305 12000000 6601 34 01 F7
F0002029 0305 12000000 6601 34 00 F7
F0002029 0305 12000000 6603 03 7A F7
35 — хм, по идее должно включать automap, но почему-то только умеет отображать текущий шаблон с названием (как при физическом долгом удержании кнопки automap — переключения шаблонов не происходит)… Проверялось при задержке 120, 220, 520 и 820 мсек между SysEx`ами включения и выключения кнопки,
6802 0357 0001 01 F7 — Исполнение операций RowSelect касанием строки/регулятора
ZeRO MkII переключает настройку TouchSel, у SL MkII в принципе для этого уже присутствуют физические кнопки, поэтому надобности особой нет, а на ZeRO MkII оказывается можно симулировать нажатие этих кнопок:
29 — кнопка выбора строки УДАРНЫХ ПЛОЩАДОК (Row-Select 5);
2A — кнопка выбора строки БОЧОНКОВ (Row-Select 4);
2B — кнопка выбора строки НИЖНИХ ЛЕВЫХ (Row-Select 3 — Buttons-B);
2C — кнопка выбора строки БЕСКОНЕЧНЫХ ВРАЩАЛОК (Row-Select 2);
2D — кнопка выбора строки ВЕРХНИХ ЛЕВЫХ (Row-Select 1 — Buttons-A);
36 — кнопка выбора строки НИЖНИХ ПРАВЫХ (Row-Select 8 — Buttons-D);
37 — кнопка выбора строки ВЕРХНИХ ПРАВЫХ (Row-Select 7 — Buttons-C);
38 — кнопка выбора строки ПОЛЗУНКОВ (Row-Select 6);
3B — контроллер НАМЕРТВО ВИСНЕТ… (ну да: Cn num = 1-58, а
3B это уже 59-я кнопка, хотя на 64-й (
40) Speed-Dial «жмётся»)
6800 05 0F 0001 08 F7 — 5-й Encoder в режим NOTE (ага!);
Ой, чуть опять не вылетело с головы. В общем, нельзя сделать так, как в Reloop Contour и Reloop DigitalJockey… Контроллер значение min принимает за номер ноты, а значение max за её динамику, она же регулируется… Ах да, чтоб регулятор собственно и был настроен в "ноту" нужно для начала поменять тип отправляемого сообщения:
F0002029 0305 12000000 6800
05 08 0001 06 F7, хотя можно и так:
F0002029 0305 12000000 6800
05 08 0001 0B F7 — DRUMNOTE. на деле же разницы никакой, т.к. Note OFF автоматически (через заданный промежуток в TIMER) не шлётся
А при достижении предела, бесконечный вращатель "останавливается", как говорится, не WRAP`ается (и, вроде, в StepVal настроить нельзя — не кнопка же).
Другое дело, Program Change. Да, только такими махинациями можно на ползунок/крутёлку его назначить. Причём независимо, с MSB/LSB или без. Мне вот сегодня почему-то каким-то образом получилось прописать этот Program Change на ползунок так, что MIDI-OX стал принимать F5 (SysEx Continue) О_О, FD (Undefined) и пр. System Common сообщения… При этом, диапазон регултятора был от 127 до 255 и ещё нулевое сверху (т.е. аж 129 значений), правда проверив
каждое значение, ползунок всё-таки два лишних значения где-то пропускает (или максимальное задалось 256 и ноль сверху? уже не помню)… Позже мне удалось поменять другое значение в Data-Block, и теперь ползунок адекватно меняет нужные мне patch`и (т.е. с указанием MSB — правда, в этом случае, само сообщение Program Change шлётся спустя какое-то время (250~350ms или может вообще полсекунды) после остановки ползунка.
PitchBend/ModWheel и Aftertouch ZeRO MkII симулировать не умеет
Зато вместо 18, 19 и 20 ползунка шлёт почти то же, что и вторая, третья и четвёртая верхняя кнопка слева (CC## 25, 26 и 27) (в Automap Universal шаблоне), правда, для некоторых, чтоб нажать (получить значение 1), нужно отправить 0, а чтоб отпустить (получить 0) — отправить 64, а один из "симулированных ползунков" вообще в начале шлёт только нечётные значения (т.е. 1, 3, 5 и т.д.)