Yamaha psr3000, есть ли sysex или команда для настройки велосити всей клавиатуры?

  • Автор темы Автор темы Alexsus
  • Дата начала Дата начала
С темпом оказалось даже намного проще. Вот выдержка из ответов поддержки MDP2
MIDI Target Производитель(и): Yamaha
Ответ на вопрос FB о кодировании tempo sysex для Yamaha Tyros 5.
Насколько я могу судить, Tyros использует темповое кодирование микросекунд на четвертную ноту Yamaha (MSPQ). Тогда BPM = 60 000 000/MSPQ.
На этом сайте показано, как рассчитать значения MSPQ в шестнадцатеричном формате midi: https://www.psrtutorial.com/forum/index.php/topic,48303.msg378327.html?PHPSESSID=fpnktbvik6nsjjf0nsped33n96#msg378327 .
Но, так как MDP2 нужно именованное значение тика в десятичном виде, мы можем пропустить всю чепуху преобразования. Нам просто нужно MSPQ = 60 000 000 / BPM
Составьте таблицу желаемых значений темпа следующим образом:
BPM MSPQ
100 600000
110 545454
120 500000
130 461538
140 428571 и
т.д...
Мы хотим иметь возможность выбирать по BPM, поэтому нам нужно сначала добавить третий столбец со значением midi, пробелом, отображаемым значением.
Нагрузка BPM MSPQ
100 600000 600000 100
110 545454 545454 110
120 500000 500000 120
130 461538 461538 130
140 428571 428571 140
Нам нужна новая ручка типа sysex. У меня нет формата Tyros sysex, но предположим, что это F0 43 7E 01 t4 t3 t2 t1 F7.
Введите 43 7E 01 V в качестве формата sysex (пропустите F0 в начале, F7 в конце), выберите четырехбитное V, без контрольной суммы.
Выберите именованные тики, выберите текст редактирования, очистите все данные и вставьте столбец «Загрузить» выше, за вычетом строки заголовка. Примечание: убедитесь, что разделители тысяч не используются — именованные тики их не распознают.
Если все введено правильно, значения данных для 120 должны отображаться как 00 1E 42 20.
 
Для пробы сделал крутилку темпа на пять тиков. Все получилось, работает. В приложенном файле экселя табличку надо сделать с нужными тиками темпа и вставить. Все работает автоматически.
image.jpg
 
SysEx, устанавливающий громкость в SOUND CREATOR\Common всё же существует, но он работает только "ручным выбором voice" или "нажатем на One Touch Setting", куда кстати прописывается ещё ↓такая↓ куча SysEx`ов:
Вернусь к громкости и релизу, может быть таки среди неизвестных есть сисекс, который меняет громкость в саунд креаторе? По идее громкость в микшере и громкость в саундкреаторе должны быть разные вещи. Это как два усилителя включенные последовательно упрощенно. Ведь когда увеличиваешь с внешнего контроллера в микшере громкость и одновременно с синта уменьшаешь громкость в креаторе звук уменьшается, а не лупит по внешнему сисексу на максимум. Неясно почему ползунок креатора на «улицу» выдает стандартный общий контроллер громкости.
 
Ага, один и тот же СС7 ямаха шлёт из обоих мест, но если выкрутить громкость в 0 во вкладке Common (Voice Set или он же SOUND CREATOR), тогда из микшера/Balance CC7 не шлёт. Если наоборот, выкрутить на мишкере/Balance в 0, тогда из вкладки Common Volume не шлёт CC7.
Если в одном из тех двух мест установить значение 127, тогда CC7 другого из них выдаёт "настоящее" значение своего регулятора. Конечно, с такими "финтами" могли бы уже и CC39 (Volume LSB) присобачить для "внутреннего", т.о. точно "нарушив GM-спецификацию" (т.е. не разделять один регулятор на "грубую" и "малозначимую" громкость), но, увы…
Мне было б интересно ещё узнать, существует ли такой SysEx, чтоб с MIDI-порта можно было переключить состояния PANEL SUSTAIN, TOUCH RESPONSE и позицию TOUCH OFF LEVEL,… Ну а там ещё и "назначения педали" и пр… В общем, всё, что позволит избавиться от регистрационки :)

Насчёт выставления "tick`ов" в темпе – так это ж неудобно! Такой вариант уже мною был опробован в Cubase.
В CakewalkStudioWare пришлось искусственно "укоротить" диапазон темпа (вместо 5~500 BPM), т.к. разработчики StudioWare знаковым целым (логично же было бы беззнаковым) испортили так, что при достижении диапазона (не max/min числа, а именно диапазона между этими числами) в √(2³¹), ползунок сбрасывается в значение min (да, именно а значение)… Фактически, это баг (причём оставшийся вплоть до Platinum, а может и у "обэндла́бившегося" до сих пор существует?). В итоге, рабочий диапазон регулятора:
min=14140 (при делении на 279 ≈50.68BPM)
max=60480 (при делении на 279 ≈216.77BPM)
первый байт бесполезен, всегда равен 0, (2147483646/(83*Tmpo/647))>>21
второй байт = (2147483646/((1240*Tmpo)/9666))>>14&127
третий байт = (2147483646/((1240*Tmpo)/9666))>>7&127
четвёртый байт = (2147483646/((1240*Tmpo)/9666))&127
Но из-за вынужденного деления на 279 "и так уже максимально-допустимого диапазона" значения регулятора и последующего умножения (т.о. умножая значение регулятора на дробное число), каждые 7-8 единиц выдают один и тот же результирующий SysEx (т.е. немного не соответствуя реальному значению регулятора темпа в StudioWare-панели)! Т.е. в итоге в SysEx оказывалось не 46340, а ≈каких-то 5944 значений темпа, которое чаще всего попадается с дробью (правда, в файлах стилей/регистрационках всё сохраняет округлённо)!
То "длинное делимое" выше – это максимально-допустимое делимое число, под которую реально "подобрать дробь"…
Если использовать число 2000000000, тогда каждые 9 (т.о. ≈всего 5148 значений, т.е. ещё меньше), но зато точных (соответствовующих значению у ползунка) разительно больше (реже врёт)…
Вывод пришёл такой, что в StudioWare придётся делать кучу разных соотношений дробей, чтоб хоть каким-нибудь из них можно было найти нужное значение в SysEx`е…

А у Cubase/Nuendo не диапазон, а само число может быть не более 2216959 (ниже 27 BPM уже не опустишь)
 
Последнее редактирование:
Насчёт выставления "tick`ов" в темпе – так это ж неудобно!
Согласен, «кучу» тиков мне тоже не хочется делать. Это же если как положено 495 штук надо. В екселе не долго, но количество … Руки дойдут, подумаю как при помощи streambiter реализовать. У меня просто кнопки темпа не работают, пока и на безрыбье…
С RELEASE вообще странность. То что я посылаю в синт, не сбрасывается никак, кроме как с внешней команды. И на выбранном канале применен везде и всегда . Хоть переключай OTS, хоть регистрационку. Можно только с саунд креатора ползунок убрать и поставить. Тогда другие войсы применяют свои настройки RELEASE. Или выключить-включить синт. Все остальные параметры сбрасываются при смене войса на настроенные без проблем. Лучше бы такое поведение у VELOCITY DEPTH было. И то польза была бы. Мне уже начинает казаться, что Ямаха специально такие баги втыкает.
 
Последнее редактирование:
В CakewalkStudioWare пришлось искусственно "укоротить" диапазон темпа (вместо 5~500 BPM)
Ну у меня в программе такого ограничения вроде нет. В принципе устраивают и «тики». Надо попробовать сделать все и посмотреть, что там получится на синте. Где то был вопрос в форумах, если темп дробное число, округляется ли он в синте практически или показывает одно, а играет другое. Ответ не увидел. Ведь если синт округляет практически темп, то и смысла в этой точности нет.
Мне было б интересно ещё узнать, существует ли такой SysEx, чтоб с MIDI-порта можно было переключить состояния PANEL SUSTAIN, TOUCH RESPONSE и позицию TOUCH OFF LEVEL,
А чем полезны эти параметры?
И еще небольшой вопрос можно? Что означает в параметре в документации Rsv (например Rcv CHANNEL, Rcv EXPRESSION) ?
Отключение-включение приема этих параметров с внешнего миди?
 
Последнее редактирование:
А у Cubase/Nuendo не диапазон, а само число может быть не более 2216959 (ниже 27 BPM уже не опустишь)
Сделал сейчас в экселе табличку и скопировал 496 «тиков». Все прекрасно регулируется от 5 до 500. Вполне удобно стало.
 
Все "Rcv." (XG Multi Part) параметры "эффективны" только для SONG 1-16 партий.
Если например у нескольких партий Rcv.Channel настроить на одинаковый канал, то послав кучу CC того канала (одного) настроятся сразу все те партии, на которых этот канал был задействован.
Т.е. фактически, MIDI-каналы здесь интерпретируются БУКВАЛЬНО как каналы (т.е. типа провода, по которым настраиваются партии). Сами же партии тут выступают в роли "носителя" этих параметров.
Я так понимаю, эта функция добавлена для совместимости с контроллерами, умеющих слать какие-то канальные сообщения, но только какого-то определённого MIDI-канала.
Rcv. Expression – тупо переключатель игнорирования или приёма CC11. Если разные партии слушают один и тот же MIDI-канал (одинаковое значение Rcv.Channel), и у одной из них Rcv. Expression = 00, то CC11 у этой партии проигнорируется, тогда как у других, подключенных к тому же MIDI-каналу – установится.
Можно узнать номера «слушающих» MIDI-каналов партиями RIGHT1/2/3/LEFT/EXTRA1…5/STYLE (ACMP) RHY1…PHR2 отправив на них XG Parameter Request. Вы удивитесь, но они отличаются от установок MIDI, и от "привычных представлений"… (да хотя бы потому, что EXTRA1-5 имеют номера MIDI-каналов 17-21, что «не вписывается» в 4 разряда доступного диапазона)…
Но вот как узнать, какие же MIDI-каналы слушают Multi Pad`ы — не знаю.

Темп действительно поддерживается дробный, просто индикация округляется…
На работе снимок с достигнутым "Пределом таблицы" остался. Хотелось повторить дома в sCalc (LibreOffice), так тот "повис"… В общем, попытка сделать таблицу всех возможных значений темпа (т.е. все 11880000 штук) провалилась…
Про "не линейность" ползунка в Cubase – это из-за того, что темп задавался "прямыми значениями µsec/beat (микросекунд за долю)", т.е. большая часть ползунка – ниже 100 BPM, а меньшая — быстрее…

А по "сбросу" Release… Ну так даже XG System ON | XG ALL PARAMETER RESET не сбрасывает кучу XG параметров, применённых к той партии!
CC64 = 127 и тут же 0 – тоже на сброс не повлияло — вот тут и нужно удалённое переключение Panel Sustain…
 
Последнее редактирование:
  • Like
Реакции: Alexsus
На работе снимок с достигнутым "Пределом таблицы" остался. Хотелось повторить дома в sCalc (LibreOffice), так тот "повис"… В общем, попытка сделать таблицу всех возможных значений темпа (т.е. все 11880000 штук) провалилась…
Ну такие вещи только «на лету» просчитывать нужно. Почти 12 миллионов держать в массиве :eek: У меня максимум в прорамме 1025 «тиков». В общем-то это, по моему мнению, не совсем нужно в практике.
 
Ну что же. Получилось запустить конвертирование «на лету» velocity клавиатуры в моем синтезаторе. Вопрос темы решился. Может кому полезно будет. Работает любой старый iPad. У меня lPad4 подключенный по USB. В настройках миди синта выключаем воспроизведение партий и конфигурируем на прием и воспроизведение этих каналов с iPad. Всё . Настраиваем (рисуем пальцем) любую кривую velocity и играем. Все работает без задержек и лагов. Кривых можно задать любое количества и переключать соданными кнопками прямо с контроллера на этом же iPad. Недурственное использование старого гаджета, который в принципе уже трудно использовать по его прямому назначению. На нем же правда еще без тормозов идет приложение Korg iM1 и некоторое количество модульных синтезаторов. Спасибо «G~Li†ch» за активную помощь в предоставлении и конкретизации информации по миди. Мне это сильно помогло. Кстати там есть блок Dinamic Clock, поддерживается темп до сотых долей. Я в форуме аудиобас прочитал от автора сообщение. Вообще он и пищет, что сделал эту программу, потому что не было никаких альтернатив. И это не копирование и не переделка существующих программ, а уникальная программа программирования миди по своим, самым любым потребностям. Основные востребуемые блоки он сделал.
Я не очень часто публикую здесь (предпочитаю вести дискурс о своих приложениях на своем собственном форуме), и я подозреваю, что могу немного помешать этому, но я хочу обратиться к некоторым комментариям, которые я недавно прочитал здесь о моих приложениях, и сделать несколько более общих заявлений о MidiFire и StreamByter и о том, как они работают в качестве ссылки.

1. StreamByter жесткий/arcane/assembler-like/неэффективный

На самом деле, язык StreamByter очень прост (см. ниже). Сложность MIDI-скриптов действительно связана с необходимостью понять, как работает сам MIDI; я бы сказал, что это верно для любого языка сценариев MIDI. Без понимания MIDI все это кажется эзотерическим. Для тех, кто понимает MIDI, StreamByter имеет большой смысл - в конце концов, он был разработан на основе протокола MIDI.

При сварке язык StreamByter состоит всего из 5 простых команд, общего сопоставления шаблонов и переменных массива:

ASS - присвоить значения переменным массива
SND - отправить MIDI-сообщение
MAT - выполнить расчет
IF/ELSE/END - условия и циклы
SET - настройка меток и ползунок
[входное MIDI-сообщение] = [выходное MIDI-сообщение] - перепишите MIDI-сообщение с использованием шаблонов

переменные массива - это просто слоты памяти (или специальные значения, такие как случайность, время, текущее сообщение или ползунок), которые используются в вышеуказанных правилах.

и все.

Язык относительно строгий с точки зрения синтаксиса - это для того, чтобы облегчить разбор.

Я прочитал комментарий, где кто-то предположил, что StreamByter был неэффективным - это не может быть дальше от истины - Внутренне StreamByter чрезвычайно эффективен и тщательно закодирован вручную на чистом C (моя специальность) - текстовые правила не оцениваются динамически во время выполнения, а преобразуются в двоичный формат и обрабатываются почти с голой скоростью.

В другом комментарии говорилось, что я сделал слайдеры "трудными" для работы в коде. Я не согласен. Значение ползунка можно прочитать внутри сценария, просто посмотрев на значение переменной. Настройка ползунка из кода осуществляется путем установки этого значения - это очень просто. Изменение имени ползунка и его диапазона - это простая инструкция SET. Вы можете получить более продвинутый, если хотите, и получать уведомления в своем сценарии о перемещении ползунка, найдя конкретное MIDI-сообщение.

2. Вам нужно знать StreamByter для MidiFire

Огромное количество вещей можно сделать в MidiFire без необходимости приближаться к каким-либо сценариям. Это включает в себя переназначение каналов/нот, разделение клавиатуры/скорости, кривые скорости/давления, сложные/точные MIDI-часы, мониторинг событий, автоматизированные развертки CC, преобразование из поли в моно, управление Bluetooth/wifi и дистанционное управление всем через MIDI-обучиться.

MIDI-маршрутизация MidiFire не имеет себе равных - она полностью свободна (без «полос» или «матриц») - вы просто бросаете портовые и модульные блоки на холст и подключаете их любым удобным для вас способом, и MidiFire будет сидеть и умолять. Маршрутизируйте, клонируйте и объединяйте до тошноты, создавая соединения между блоками. Внутри MidiFire маршрутизирует, используя рекурсивный механизм спуска, снова тщательно закодированный на собственном C (как и все модули), чтобы перемещать MIDI-события по графику как можно быстрее и эффективнее.

Сцены MidiFire и скрипты StreamByter полностью переносимы между iOS и macOS. Тот же код StreamByter, работающий в AUM, будет работать в Logic Pro X. Оба приложения имеют незначительные требования к памяти и низкие накладные расходы на процессор даже при больших скоростях событий и сложной обработке.

Сценарии - это глазурь на торте - она предназначена для того, чтобы позволить мне или пользователям, если они захотят, расширить возможности MidiFire для удовлетворения тысяч специализированных сценариев использования, которые существуют. Как кто-то считает, что одно приложение может сделать это с помощью графического интерфейса, ускользает от меня.

3. Философия моего приложения

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

StreamByter первоначально появился в MidiBridge и был действительно только для меня, чтобы удаленно расширить функции этого приложения по требованию. Оказывается, у него отрастили ноги, и люди начали его использовать, и поэтому я продолжал развивать его. Я понимаю, что сценарии не для всех, и это нормально, но я разочаровываюсь, когда люди (часто которые никогда даже не использовали мои приложения) увольняют их из-под контроля, когда на самом деле скрипты просто им не подходят (не заставляйте меня начинать с 1-звездочных отзывов), даже если у них есть особый сценарий использования, который необходимо выполнить, и они могут быть удовлетворены, просто спросив.

Наконец, и это может быть самый противоречивый (и, вероятно, ненужные) комментарий, но я хочу снять его с груди; у меня огромное эго. Каждое приложение, которое я выпускаю, всегда является первым в своем роде; от MidiVision и MidiBridge до MidiPace. Я пытаюсь определить потребность, которая в настоящее время не заполнена, и создать новую нишу, а не сделать «лучшую» версию уже существующего продукта. Многие из моих приложений были скопированы, от концепции/функций до того, который «заимствовал» все приложение, пользовательский интерфейс и все остальное. Такова природа конкуренции, но это не то, что я склонен делать сам. В частности, последний релиз StreamByter находится в разработке некоторое время, и многие улучшения были в списке дел до года.

С уважением, Ник

image.jpg
 
Последнее редактирование:
В CakewalkStudioWare пришлось искусственно "укоротить" диапазон темпа (вместо 5~500 BPM):
min=14140 (при делении на 279 ≈50.68BPM)
max=60480 (при делении на 279 ≈216.77BPM)
≈каких‑то 5944 значений
Ну у меня в программе такого ограничения вроде нет
У меня максимум в прорамме 1025 «тиков». В общем‑то это, по моему мнению, не совсем нужно в практике.
Т.е. 1025 фиксированных значений? Меня б удивило, если б "не-массивные" были меньше 16383, ведь Roland`овским XP(S) по нормальному надо −32768‥+32767 (хотя вроде как «эффективные» −20000‥+20000, т.е. 40 тысяч, что для CakewalkStudioWare считай повезло)…
Или взять тот же PitchBend… сами hardware-колеса (материальная часть MIDI-клавы) частенько попадаются даже меньше реально‑достижимых 10 разрядов (те же MACKIE контроллеры, правда не колёсами, а ползунками шлют PitchBend`ы в 10-разрядном диапазоне), вот и хотелось хотя бы виртуальными регуляторами достичь большей точности… как-никак MIDI 2.0 на дворе, пора допускать к созданию 32-разрядных регуляторов (с диапазоном −2³¹‥+2³¹), пускай только виртуальных…
"На практике" – эм… смотря что считать "практикой". Если "уже исполнять", то может и лишнее, но если "практиковать" игру поверх "подбираемого на слух" – то было б полезно, когда лень использовать "анализаторы BPM"… Конечно, частенько в "старье", где уже использованы drum-машины, попадаются криво-нарезанные записи ленты, под которых толком и "не поиграешь поверх":
Чаще всего – 12″ миксы, как у C.C.Catch, даже у Sabrina – «Boys»;
Modern Talking – Cheri Cheri Lady (оригинальный плюс, хотя у «недописанной» минусовки (как с бэком, так и без) как раз норм. – затухание слишком преждевременное);
Digital Emotion и мн.др.
Хотелось мне вот прописать стиль «Новости из первых рук» Державина (Сталкер), подстраиваясь под две записи: одна "с низкой скоростью" (чуть ли не до♯‑минор), другая почти ровно в ре‑миноре, но обе не попадают в «целое» значение темпа, зато подобрать "тысячные доли" темпа для обоих-таки удалось, ведь он стабильный. Вот откуда я знаю, что темп сохраняется округлённо в стиле (ага, альтернативное название той же песни)…
Кстати, проигрыши разные там из-за "банального copy/paste" не в ту "восьмую" в секвенсоре (т.е. это не наиграно криво), или, если те партии были записаны на отдельной ленте, или же после "перемотки кассеты в начало" рановато снято с паузы во время сведения в "мастер"…

Dynamic Clock – насколько я понимаю, это относится к MIDI Timing Clock [частоте отправки F8 байта]? Ну так SysEx темпа в этом случае вообще будет не нужен, если настроить ямаху на External Clock и при получении FA / FC стартовать/останавливать стиль (что вроде по-умолчанию). Кстати, старый ямаховский SysEx "FA Cancel" (F043730161F7, а для отключения: F043730162F7) не работает на современных PSR, в т.ч. 3k/1500, S700/S900…
 
Последнее редактирование:
И наконец, сценарий использования этого приложения может быть использован для слияния софт-синтезаторов с железным и управлением всем этим прямо с синтезатора , это может дать новую жизнь железу с устаревшими тембрами. Привет маркетологам Ямахи ))). У меня например есть еще iPad Pro, с процессором М1, который не затыкается даже при запуске 10 мощнейших софт синтезаторов. Все это может соединяться по wifi, хоть через телефон. С этой программы можно роутить любые комбинации тембров какие только можно и ввести например реакцию с посыла данных регистрационной памяти на включение тембра или группы тембров любых софт синтезаторов. Можно собрать любую конфигурацию и переключать одной кнопкой или с синта или с конфигурируемого контроллера iPad. Понятно, что есть компьютеры с DAW и прочее, но размеры и мощность и удобство использования. Меня это всегда не удовлетворяло. Удобство в компактности, в управлении и отсутствии задержек аудио в iOS. DAW тоже есть мощная. Cubasis, младший брат Cubase, которым также можно управлять со своих кнопок.
45000116-7E68-4C08-A51B-E07094360CCE.jpeg
5E26F765-2B8E-49DB-8588-72B927615E09.png
 
Dynamic Clock – насколько я понимаю, это относится к MIDI Timing Clock
Я еще не пробовал, но судя по ответам автора, можно повесить это на регулятор управления темпа в моем контроллере и сделать его без тиков. Он будет из streambite брать вычисленные данные с обратной связью и слать в синт темп. Диапазон надо проверить в регуляторе.
 
Modern Talking – Cheri Cheri Lady (оригинальный плюс, хотя у «недописанной» минусовки (как с бэком, так и без) как раз норм. – затухание слишком преждевременное);
Digital Emotion и мн.др.
Об этом не думал, правильно, подбор темпа под старые записи. А что мешает подогнать запись в долях под темп?
 
Ахах… а у ямах вообще что-нибудь полезное (типа такого) для iPad`ов есть? А то как раньше у них был Digital Music Notebook (для ПК), так и загнулся… А теперь похожий аналог для iPad`ов… А, ну разве что только для синтов (а не самограек):
Chord Tracker не в счёт…

с железным и управлением всем этим прямо с синтезатора
Меня вот заинтересовало, как бы это "наоборот" прикрутить… Вот например, если в регистрационки ямахи уже прописаны кое-какие настройки, в т.ч. и Velocity Curve (т.е. SENSE и OFFSET), то при вызове этой ячейки рег.памяти настроить эту самую Velocity Curve для другого виртуального синта. Т.е. играем по прежнему на другой клавиатуре, но ямаху используем чисто как «хранилище предустановок» :)

А что мешает подогнать запись в долях под темп?
Доводилось таким тоже заниматься. У меня валяется проект Mash-Up`а The Doors — Riders on the Storm (акапелла) + Johny Harris — Odyssey (миссия лоурадеров в GTA: San Andreas, собственно, откуда и был выдран ogg-файл), темп выставлен 110.757 BPM (найден более-менее стабильный кусок), но есть кое-какая куча crossfade… Запись экрана с "бегущими клипами" есть, но вот выгружать на "трубу" как-то стрёмно…
 
Последнее редактирование:
Вот хелп, для удаленного управления с этого
image.jpg
модуля.
 
Меня вот заинтересовало, как бы это "наоборот" прикрутить… Вот например, если в регистрационки ямахи уже прописаны кое-какие настройки, в т.ч. и Velocity Curve (т.е. SENSE и OFFSET), то при вызове этой ячейки рег.памяти настроить эту самую Velocity Curve для другого виртуального синта. Т.е. играем по прежнему на другой клавиатуре, но ямаху используем чисто как «хранилище предустановок» :)
Если эти сисексы передаются с ямахи, то можно скриптом вычленить и передать куда надо, на другой синт например. Почему нет то?
 
  • Like
Реакции: «G~Li†ch»
Мда… помню были такие инструменты, где выбирался voice/style/song подобными числами (00…99h) — эм, и как тогда 80‥99h впихнуть в MIDI-протокол? Числа знаем, а считать до них не умеем… nibble для кого придумали?
 
Вот еще перевел гуглом справку по блоку темпа.
Динамические модули часов MidiFire реализует высоко оцененные часы MIDIBUS через специализированный модуль. Вы можете динамически управлять многими аспектами внутренних часов с помощью MIDI-сообщений дистанционного управления; Подробнее об этом смотрите. Выход сигнала тактового сигнала незначительно изменяется в зависимости от того, как модуль подключен: тактовые соединения Виртуальное место назначения/выходные часы, которые представляются другим приложениям MidiFire, всегда будут немодифицированной копией тактового сигнала. Вам не нужно добавлять в холст порт "Midifire Clock". Если модуль динамических часов подключен напрямую к MIDI-назначению/выходу (например, «MidiFire 1» на приведенной выше диаграмме), то этот MIDI-назначение будет напрямую получать внутреннюю тактовую сигнализацию, минуя любую внутреннюю маршрутизацию в MidiFire. Это наиболее эффективный способ распределения тактового сигнала в пункт назначения. Если модуль динамических тактовых сигналов косвенно подключен к MIDI-назначению/выходу (например, MIDIIFi 2' на приведенной выше диаграмме), то внутренний сигнал тактового сигнала в первую очередь подается в соединительные модули, а затем направляется на выход. Этот тип соединения выполняется, когда вы хотите сделать что-то с сигналом тактового сигнала заранее. Параметры: Tempo Используйте это поле, чтобы установить определенный темп вручную. Вы можете использовать десятичные дроби, такие как 121.34, если вам нравится, и значение может варьироваться от очень медленного до очень, очень высокого (насколько высока мощность обработки на вашем устройстве). Нажмите на эту кнопку несколько раз, чтобы установить темп в зависимости от того, насколько быстро вы нажимаете на нее. Learn Tap вы можете настроить удаленное MIDI-событие для управления Tap Tempo. Нажмите кнопку «Научитесь нажимать», чтобы вооружиться, и следующее полученное событие MIDI будет установлено в качестве триггера Tap Tempo. Последующие MIDI-события, которые соответствуют выученным событиям, обрабатываются так, как если бы вы нажали кнопку «Tap Tempo» выше. Выученные события могут (только) быть нотными, непрерывными типами контроллера или изменения программы. Обученное событие TAP Это либо покажет выученное событие Tap Tempo MIDI, либо, если вы знаете шестнадцатеричное сообщение о событии, которое хотите использовать, вы можете просто ввести его. Автоматическое запуск Часы Вы можете указать глубокий огонь автоматически запускать часы при нажатии темпа. Количество кранов, необходимых для запуска, устанавливается с помощью меню поля, и часы будут запущены точно в такт после этого количества нажатий. Например, если вы установите значение «4» и начните нажимать, часы автоматически запустятся в такт после 4-го нажатия, т.е. При нажатии 5 (даже если вы не нажимаете 5 раз). Если для этого параметра «Нет» (по умолчанию), вы отключите эту функцию, и вам нужно будет запустить часы самостоятельно. Кнопка блока «Обход» перепрофилирована для воспроизведения/остановки для этого модуля (и значок «сила» заменен более удобными значками транспорта). Нажмите кнопку «Пуск/Стоп», чтобы запустить/остановить часы. Обратите внимание, что когда часы работают, блок модуля становится желтым. Левая метка информации на блоке показывает текущий сконфигурированный (или, если работает, вычисляемый) BPM. Правильная метка показывает, до чего часы в реальном времени в формате HH:MM:SS. Совет. Модуль динамических часов представляет собой генератор тактовых частот. Тем не менее, вы все равно можете подавать (и манипулировать и отправлять) внешний источник тактовых сигналов из другого приложения или физического порта. Пульт дистанционного управления Динамические часы реагируют на набор MIDI-сообщений для управления транспортом и темпом. Они описаны следующим образом: Tap Tempo (по умолчанию CC 63 на канале 1) динамически управляет темпом через события TAP. Это событие MIDI может быть установлено на панели конфигурации или Learned (через ту же панель) Start, Stop and Continue (фиксированная система в реальном времени) Вы можете запускать, продолжать или останавливать часы, отправляя стандартные сообщения MIDI Start/Stop/продолжение (FA, FC и FB соответственно в шестнадцатеричном формате) Грубая/тонкая регулировка темпа (фиксированные CC 19 и 51, канал 1) Отправка CC 19 на канале 1 будет регулировать темп до абсолютного значения от 20 до 200 уд/мин в зависимости от значения байта CC (0 = 20, 127 = 200) Отправка CC 51 на канал 1 будет регулировать текущий грубый темп от -20 до +20 в десятых долях ударной минуты (0 = -20,0, 127 = +20,0). Увеличение/уменьшение темпа (фиксированные CC 18 и 50, канал 1) Отправка CC 18 на канале 1 увеличивает текущий темп на десятые доли удара в минуту. (т.е. значение байт 1 = 1/10bpm, 2 = 2/10bpm, 10 = 1 bpm, 100 = 10bpm) Отправка CC 50 на канале 1 уменьшит текущий темп на десятые доли БПМ. (т.е. значение байта 1 = 1/10bpm, 2 = 2/10bpm, 10 = 1bpm, 100 = 10bpm) Значение BPM с помощью сообщения SysEx: F0 5A <thoUsandshundreds> <TensUnits> <ThenthShundredths> F7 Пример: F0 5A 01 25 37 F7 = 125,37 BPM Remote MIDI-сообщения можно подавать в модуль динамических часов непосредственно из других приложений, отправляя управляющие сообщения на виртуальный порт «Midifire Clock», который всегда прослушивает эти сообщения. Кроме того, вы можете передавать удаленные MIDI-сообщения в динамические часы, подключая MIDI-входы (или выходы модуля) к входному разъему динамических часов обычным способом. События дистанционного управления обрабатываются независимо от того, работают ли часы или нет. Совет. Вы можете иметь только один экземпляр динамических часов на холсте одновременно. Совет - если вы сохраните сцену с работающими в данный момент часами, то при загрузке этой сцены позже часы автоматически запустятся.
 
Ахах… а у ямах вообще что-нибудь полезное (типа такого) для iPad`ов есть? А то как раньше у них был Digital Music Notebook (для ПК), так и загнулся… А теперь похожий аналог для iPad`ов… А, ну разве что только для синтов (а не самограек):
Ну только одну, относительно полезную увидел за все время. Она хорошо работает с моим инструментом. Yamaha Chord Tracker. Любую мелодию загружаешь в аудио и она преобразует в аккорды. Выбираешь стиль и передаешь в инструмент. И она в миди сохраняет с темпом и аккордами. Это когда снимать вручную лень, время экономит :)
82BF1107-7D11-46A7-970F-89E5ED3C2497.jpeg
 
Вот в ней-то и проблема — как вставить вкл./выкл. партий играемого на инструменте стиля (такой SysEx как раз известен), или даже поменять банально их громкость (как во встроенном Chord Step Sequencer`е)? Ведь даже нет адекватного XG-редактора! XGWorks конечно неофициально до сих пор "насилуют", но у него тоже свои ограничения. Изучать Open Plugin Technology, чтоб написать для XGWorks`а свой "инструмент" не каждый захочет (и то, ещё надо понять, как этот OPT-модуль заставить быть понятым самим XGWorks`ом как положено).
Что они сейчас творят с XG-спецификацией – планируют что ли перенести кучу параметров второй группы XG Multi Part параметров в отдельную (пара параметров Velocity Limit (High и Low) у PSR-A5000 теперь шлются от Right1/2/3/Left на MIDI-порт, только совсем другим сообщением!)… Когда наконец они сделают приложение для работы с XG-совместимыми инструментами на том же iPad?
Вот кстати, тоже вопрос: на PSR-A5000 сохраняются ли настройки Velocity Limit (Low и High) в рег.памяти / OTS / User Voice, и сбрасываются ли они при переключении на родные тембры (когда фильтр Voice Set не применён)?
 
Вот в ней-то и проблема — как вставить вкл./выкл. партий играемого на инструменте стиля (такой SysEx как раз известен), или даже поменять банально их громкость (как во встроенном Chord Step Sequencer`е)?
Может я что-то не понимаю, но я банально меняю громкость любого инструмента в играемом стиле, 7-м контроллером. Или о чем то другом речь идет? В остальном не знаю, пока еще глубоко не копал. Для Геноса что то там некий Каспер делал, в этой программе, я скачал его настройку, там бардак какой то неподписанный. Я у него линейку регуляторов громкости партий и взял. Думаю мало кто занимается этим, даже автор в форуме писал, что мало кто из музыкантов желает ковыряться с программированием. Это факт. Но я благодарен ему, это одна из лучших моих покупок на lPad. К тому же поддерживаемая старыми планшетами, что редкость с политикой эппл. Кастомизация все таки великая штука. По крайней мере я могу нужных мне кнопок и фейдеров навешать в удобном мне виде и расположении. А не так как Ямаха посчитает нужным.
Не разбирался пока, почему как на геносе нет обратной связи с синтом от ползунков. Когда двигаю фейдер на синте, он не двигается в контроллере. У Каспера все двигалось.
30C2BFE0-A294-47D4-8096-996CE240C714.jpeg
 
У Геноса (наверно и у PSR-SX) даже есть возможность удалённо управлять не только вызовом ячеек рег.памяти по Sys-Ex`у (без конфигурирования MIDI\Receive в Keyboard), но и выбирать сами файлы рег.памяти (52 26 03 00 00 00 <путь к файлу рег.памяти, NULL-Terminated>)! И прикол в том, что генос умудряется отправлять SysEx содержащий ПУТЬ к этому файлу при его выборе (даже поддерживает запрос пути к уже открытому файлу: 52 26 03 01 00!), чего не было у PSR-S№№№ и PSR-3k/1500 и раньше…
Меня же интересовала возможность управлять параметрами тембров партий стиля без настройки Receive на STYLE-партии, т.е. исключительно SysEx`ами…!
Вот банальный пример — функция Style Touch (громкость стиля зависит от силы атаки по аккорду) – обидно, что прописав в SONG, замечаю только разные Velocity в записанных нотах, т.е. даже не CC, и не SysEx`ы, и даже не Meta! А если хочу управлять стилем (в т.ч. velocity его нот) не касаясь клавиатуры ямахи? Хм, может возможно как-то умудриться откалибровать Velocity Sense/Offset для стиля?
Ой, это тот ещё "костыль" (особенно, когда банально не берёт определённые недокументированные аккорды интервалы… и да, на самом деле ct и bt могут быть вплоть до 3Ah, а не 22h!). Собственно поэтому меня вполне устраивает смена аккордов по F0437E02 __ __ __ __ F7… У KORG старых i-серий тоже есть собственная спецификация аккордов, вот только без понятия, сохранилась ли она у PA`шек…
банально меняю громкость любого инструмента в играемом стиле, 7-м контроллером. Или о чем то другом речь идет?
О том, что следующие "Substatus Section No.3: Single Keyboard" события поддерживались только более старыми моделями ямах:
11 00 42 vvAll Style Part Volume
11 05 42 vvRhythm Part Volume
11 06 42 vvChord Part Volume
11 07 42 vvPhrase Part Volume
11 0A 42 vvBass Part Volume
11 0D 42 vvPad Part Volume
Или как в Disc Orchestra (DOC):
0n 16 vvSOLO VOLUME
0n 17 vvCHORD 1 Volume
0n 18 vvBASS Volume
0n 19 vvRHYTHM Volume
0n 1A vvSOUND EFFECTS VOLUME
0n 1B vvROLL BAR VOLUME
0n 1C vvORCH. 2 Volume
0n 1D vvCHORD 2 Volume
линейку регуляторов громкости партий
Это с каких файлов-то? Разве в "немодифицированных" регуляторов не было?
 
Последнее редактирование:
Это с каких файлов-то? Разве в "немодифицированных" регуляторов не было?
В MDP2 всё созданное сохраняется в Layout файлы. Я для изучения, что он там насоздавал в видео, скачал его файл. Мог бы и сам сделать, но чтобы не тратить время, скопировал страницу и вставил к себе.

У Геноса (наверно и у PSR-SX) даже есть возможность удалённо управлять не только вызовом ячеек рег.памяти по Sys-Ex`у (без конфигурирования MIDI\Receive в Keyboard), но и выбирать сами файлы рег.памяти (52 26 03 00 00 00 <путь к файлу рег.памяти, NULL-Terminated>)! И прикол в том, что генос умудряется отправлять SysEx содержащий ПУТЬ к этому файлу при его выборе (даже поддерживает запрос пути к уже открытому файлу: 52 26 03 01 00!), чего не было у PSR-S№№№ и PSR-3k/1500 и раньше…
Я примерно так и подумал по этому поводу. Он там просто жмакает в созданной кнопке на обучение и выбирает на Геносе стиль. И все. Кнопка обучена. У меня так не получилось. У меня при нажатии стиля куча СС идет на миди монитор и еще что-то. Похоже вручную надо. Мне пока не нужно стили на экран, потом попробую.
Меня же интересовала возможность управлять параметрами тембров партий стиля без настройки Receive на STYLE-партии, т.е. исключительно SysEx`ами…!
Теперь понятно стало.
О, кстати, Velocity Sense/Offset как-то влияют на Style Touch?
К стыду своему не знал, что есть эта функция у меня. Где ее искать?
Нашел, не пользовался ей. Попробую сейчас.
 
Последнее редактирование:
На Style Touch никакие изменения offset/depth никак не повлияли.
 
Последнее редактирование:
При выборе стиля, вот что выдает наружу:
Message In: Length=10: F0 43 10 4C 02 01 40 4B 08 F7

Message In: Length=10: F0 43 10 4C 02 01 42 00 11 F7

Message In: Length=10: F0 43 10 4C 02 01 44 00 02 F7

Message In: Length=2: C9 00

Message In: Length=10: F0 43 10 4C 02 01 46 00 2E F7

Message In: Length=10: F0 43 10 4C 02 01 48 00 28 F7

Message In: Length=10: F0 43 10 4C 02 01 54 00 7F F7

Message In: Length=9: F0 43 10 4C 02 01 56 7F F7

Message In: Length=9: F0 43 10 4C 02 01 58 1C F7

Message In: Length=9: F0 43 10 4C 02 01 59 00 F7

Message In: Length=9: F0 43 10 4C 02 01 5A 01 F7

Message In: Length=10: F0 43 10 4C 02 01 20 42 08 F7

Message In: Length=9: F0 43 10 4C 02 01 2E 00 F7

Message In: Length=9: F0 43 7E 01 00 1B 7A 1F F7

Message In: Length=9: F0 43 10 4C 08 08 07 03 F7

Message In: Length=9: F0 43 10 4C 08 09 07 02 F7

Message In: Length=9: F0 43 10 4C 30 24 02 64 F7

Message In: Length=9: F0 43 10 4C 30 24 05 00 F7

Message In: Length=9: F0 43 10 4C 30 28 02 7E F7

Message In: Length=9: F0 43 10 4C 30 2A 02 62 F7

Message In: Length=9: F0 43 10 4C 30 2A 05 51 F7

Message In: Cmd=176|Ch=12|Data1=074|Data2=044 | Length=3: BB 4A 2C

Message In: Cmd=176|Ch=11|Data1=094|Data2=000 | Length=3: BA 5E 00

Message In: Cmd=176|Ch=11|Data1=074|Data2=064 | Length=3: BA 4A 40

Message In: Cmd=176|Ch=13|Data1=007|Data2=036 | Length=3: BC 07 24

Message In: Cmd=176|Ch=11|Data1=007|Data2=038 | Length=3: BA 07 26

Message In: Length=2: CF 05

Message In: Cmd=176|Ch=15|Data1=007|Data2=036 | Length=3: BE 07 24

Message In: Cmd=176|Ch=15|Data1=010|Data2=064 | Length=3: BE 0A 40

Message In: Cmd=176|Ch=16|Data1=094|Data2=127 | Length=3: BF 5E 7F

Message In: Cmd=176|Ch=12|Data1=010|Data2=075 | Length=3: BB 0A 4B

Message In: Length=6: BA 00 08 BA 20 00

Message In: Cmd=176|Ch=13|Data1=094|Data2=000 | Length=3: BC 5E 00

Message In: Cmd=176|Ch=16|Data1=091|Data2=000 | Length=3: BF 5B 00

Message In: Cmd=176|Ch=12|Data1=007|Data2=036 | Length=3: BB 07 24

Message In: Cmd=176|Ch=12|Data1=071|Data2=064 | Length=3: BB 47 40

Message In: Cmd=176|Ch=15|Data1=091|Data2=000 | Length=3: BE 5B 00

Message In: Cmd=176|Ch=12|Data1=091|Data2=007 | Length=3: BB 5B 07

Message In: Cmd=176|Ch=16|Data1=010|Data2=064 | Length=3: BF 0A 40

Message In: Length=6: BE 00 08 BE 20 00

Message In: Length=6: BF 00 08 BF 20 00

Message In: Cmd=176|Ch=10|Data1=091|Data2=016 | Length=3: B9 5B 10

Message In: Length=2: CB 03

Message In: Cmd=176|Ch=13|Data1=091|Data2=025 | Length=3: BC 5B 19

Message In: Length=2: CA 11

Message In: Cmd=176|Ch=10|Data1=007|Data2=048 | Length=3: B9 07 30

Message In: Cmd=176|Ch=10|Data1=094|Data2=000 | Length=3: B9 5E 00

Message In: Cmd=176|Ch=12|Data1=094|Data2=127 | Length=3: BB 5E 7F

Message In: Length=2: CE 05

Message In: Cmd=176|Ch=13|Data1=010|Data2=056 | Length=3: BC 0A 38

Message In: Cmd=176|Ch=16|Data1=007|Data2=036 | Length=3: BF 07 24

Message In: Cmd=176|Ch=15|Data1=094|Data2=127 | Length=3: BE 5E 7F

Message In: Length=6: BB 00 08 BB 20 00

Message In: Length=9: F0 43 10 4C 30 2C 02 66 F7

Message In: Length=9: F0 43 10 4C 30 2C 05 51 F7

Message In: Length=9: F0 43 10 4C 30 2E 02 66 F7

Message In: Length=9: F0 43 10 4C 30 2E 05 51 F7

Message In: Length=9: F0 43 10 4C 08 0F 11 1E F7

Message In: Length=9: F0 43 10 4C 08 0E 11 1E F7

Message In: Length=9: F0 43 10 4C 08 0B 11 0A F7

Message In: Length=9: F0 43 10 4C 08 0B 73 40 F7

Message In: Length=9: F0 43 10 4C 08 0B 72 40 F7
 
Автоматом можно MIDI-OX заставить слать этот SysEx по Program Change в качестве "спускового крючка"…
Решил таки сделать «спусковой крючок». Не нравится мне по кругу гонять миди. Сделал невидимую кнопку с реакцией на входящий sysex и управлением установками по умолчанию трех кнобов VELOCITY DEPTH на партии клавиатуры. Вписал входящий sysex с переменной, который чаще всего встречался в выборе тембра. Все заработало, но многие тембры видать не шлют эту команду и не меняют положение кнобов. Есть ли такой общий sysex, который ВСЕГДА посылается при смене тембра и при смене стиля? Вот прямо чтобы обязан был быть. Ну и чтобы наружу выдавался. Или создавать еще кнопки придется? Хотелось бы минимумом обойтись. VELOCITY DEPTH кнобы не «слышат» и положение не меняют при смене. Оно видимо по умолчанию установлено на 40H и наружу не шлется. Из тех команд выше, какой может быть обязательным?
 

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