Программный MIDI-синтезатор для Windows, который работает как VSTi-плагин. Поддерживает расширения Yamaha XG и Roland GS, что является уникальной особенностью S-YXG50. Был частью пакета Yamaha SOL2. Yamaha прекратила поддержку данного программного синтезатора в 2003 году, поэтому была создана переносимая версия этого VSTi, не требующая установки и ключей в реестре. Используется встроенная в ресурсы DLL-файла официальная 4MB-версия wavetable, лучше которого для S-YXG50 не выпускалось.
Скачать: yamaha_syxg50_vsti.7z (3.0MB).
Что нового в этом патче?
- Не требуется установка. SYXG50.DLL теперь всегда читает файлы из своей директории.
- Файлы таблиц звуковых данных расшифрованы и сохранены в ресурсах DLL-файла.
- Если же их удалить из ресурсов, то VSTi будет искать их в своей директории (SXGBIN41.TBL, SXGWAVE4.TBL).
- Полностью удалён антиотладочный код, код проверки серийного номера и код trial-режима.
- Скрытые настройки читаются из ini-файла с именем, аналогичным имени dll-файла, но с расширением ini.
- По умолчанию лимит полифонии равен 128.
- Более частые обновления информации в GUI.
- Кнопка Help будет спрятана, если нет файла SYXG.CHM.
- Мета-информация VST находится в ресурсах (String Table), поэтому при необходимости её можно легко изменить.
- GUI может быть выключено и ресурсы GUI могут быть удалены, в результате чего этот VSTi будет работать как SGP.DLL.
Этот патч никак не влияет на синтез звука оригинального VSTi. Это было протестировано на сотнях MIDI-файлов, чтобы убедиться, что вывод побитово идентичен оригинальному S-YXG50 VSTi с теми же настройками.
Как использовать
Для проигрывания MIDI при помощи этого синтезатора необходимо настроить какой-нибудь VST-хост. В качестве него может выступать ваш любимый плеер, только нужно найти соответствующий плагин. В качестве примера ниже приведено несколько инструкций. Для проверки корректности настройки послушайте bi2_polkovnik.mid (35KB) — он должен звучать идентично записи bi2_polkovnik_syxg50.ogg (2.0MB).
VSTi MIDI Driver (как системный MIDI-синтезатор)
VSTi MIDI Driver позволяет использовать любой VSTi как глобальный системный MIDI-синтезатор. В данном случае каждая игра или MIDI-плеер, которые используют стандартный системный MIDI-синтезатор, будут использовать Yamaha S-YXG50 VSTi.
- Установите Falcosoft VSTi MIDI Driver.
- Если у вас Windows 8 и новее, также установите Coolsoft MIDI Mapper.
- Скопируйте syxg50.dll из yamaha_syxg50_vsti.7z в любой каталог.
- Откройте настройки VSTi MIDI Driver, нажмите кнопку Load VSTi и выберите syxg50.dll.
- Откройте MIDI Mapper и выберите VST MIDI synth в выпадающем списке Default MIDI synth.
- Готово! Yamaha S-YXG50 VSTi будет использоваться как системный MIDI-синтезатор по умолчанию.
Yamaha S-YXG50 WDM (официальный драйвер только для Windows XP)
VSTi MIDI Driver поддерживает Windows XP/Vista/7+, но на Windows XP лучше использовать официальный Yamaha S-YXG50 WDM-драйвер, который можно скачать с серверов Microsoft Windows Update: 4MB-версия (лучше качество, расходует больше ресурсов), 2MB-версия (хуже качество, расходует меньше ресурсов). Установка этого WDM-драйвера производится вручную при помощи мастера установки оборудования в панели управления. Не забудьте выбрать Yamaha S-YXG50 как синтезатор MIDI по умолчанию в системных настройках звука. Когда используется Yamaha S-YXG50 WDM, в VSTi версии этого синтезатора нет необходимости.
foobar2000 (лучший плеер для тех, кто влюблён в музыку)
foobar2000 не использует системный MIDI-синтезатор, но это не является недостатком. Это позволяет использовать Yamaha S-YXG50 VSTi без установки драйверов в систему, что более надёжно.
- Скачайте и установите плагин foo_midi с сайта foobar2000.
- Создайте в каталоге foobar2000 подкаталог с именем vsti и скопируйте в него файл syxg50.dll из yamaha_syxg50_vsti.7z.
- Откройте в плеере настройки, Advanced → Playback → MIDI Decoder → VSTi search patch, укажите в этом поле полный путь до созданного вами подкаталога vsti, после чего примените изменения и перезайдите в окно настроек.
- Перейдите в Playback → Input → MIDI synthesizer host. В выпадающем списке plug-in выберите Yamaha S-YXG50, примените изменения.
- Готово! Теперь MIDI в foobar2000 будут воспроизводиться при помощи Yamaha S-YXG50.
Ссылки
- yamaha_syxg50_vsti.7z (3.0MB) — версия со встроенным 4MB wavetable, для обычного использования.
- yamaha_syxg50_vsti_ext.7z (4.0MB) — версия с внешними 2MB и 4MB wavetable, для экспериментов.
- bi2_polkovnik.mid (35KB) и bi2_polkovnik_syxg50.ogg (2.0MB) — MIDI и пример его корректного звучания для проверки корректности настроек вашего плеера и работоспособности самого VSTi.
YAMAHA User, мне интересен в первую очередь оригинальный S-YXG50, поэтому если я и буду дорабатывать, то его. Впрочем, он же лежит в основе «TyRUS», так что все нужные доработки в него можно будет скопировать при желании.
Ради прикола, попытался достать музяку одного француза с Menu.zik (201кБ) с арканоида 3DRTBrickBlaster... Да, это на самом деле MOD (всего 4 канала), но изврат с нотами – это нечто... Ладно, когда на ноте звучит целый аккорд (пэд), но вот бас играет совсем не те ноты, которые на деле "звучат" (т.е. высота тона звучит одинаковая, меняется только тембр (разный LP-фильтр), но нота, вызывающая этот звук, другая!). Порядок, навести можно (транспонировав некоторые ноты "на место", да и объединив на один канал), останется только подписать CC#74 и CC#71, ну и проч. А что касается ударника, так второй sample проигрывает два удара бочки, потом хэт, потом тихая бочка (и всё за одну "ноту"). Хотя, чаще попадаются модули, в которых аж целые циклы записаны! И чтоб изменить темп, надо менять частоту... Вот и как после такого "конвертировать" треккерные форматы в MIDI?
У меня уже давно возникала мысль сделать доступным звуковой банк ямахи, чтоб можно было использовать её звуки в трекерных модулях (как в OpenMPT – загружать прямо из GM.DLS или .SF2 файлов). Поэтому тут и вёлся разговор о том, чтобы сделать банк в sf2 формате.
Илья, вместо того, чтобы засорять винт копиями одного и того же файла, можно сделать жёсткую ссылку (fsutil hardlink create или на висте: mklink /H), раз хост не может загрузить несколько "копий" одного и того же синта... Да и вообще, если б и был такой формат, то не каждый проигрыватель сможет его "завести". А практически, ничем не отличается от комплектации MIDI файла с целым банком звуков, из которого используется лишь малая часть, а ещё его надо указывать в проигрывателе. Не знаю, сможет ли, но мне самому интересно повесить на AIMP (который только 32-битный), какой-нибудь 64-битный VSTi, хоть бы из-под Wine... Такие форматы, возможно и будут интересны музыкантам, но только не для простого слушателя, у которого и проигрывателя такого нет... Вон люди умудряются скачивать музыку в виде исполняемых файлов, и я даже удивляюсь, как они ещё воспроизводятся.. А тут скачают, посмотрят — а звука нет, а почему, никто и не догадается... Трекерный модуль в себе содержит уже всё что нужно (на то он и модуль), многие проигрыватели уже имеют встроенный декодер, однако в некоторых модулях подписывали, что mod4win воспроизводит модуль неправильно (какие-нибудь эффекты, ramping), и лучше использовать FT2 или XMPlay). А тут, чтоб воспроизвести «ВСТ МИДИ», надо предварительно настроить, чтобы проигрыватель видел VST синтезатор, а потом ещё научить "подключать" его "по-требованию"... Или может я что-то неправильно себе это представляю?.. Теоретически, можно создать "специальный SysEx" с именем этого файла (только ASCII или, возможно, UTF-7), но нужно чтоб декодер его интерпретировал как комманду загрузить банк (или синт), и перед воспроизведением подождать, пока не загрузится (если ещё не загружен)...
А если кто сидит только в мобильнике (или phablet'ах), как он себе этот синтезатор поставит, чтоб прослушать этот файл?
Вспомнились форматы, в которых записываются даже сами настройки генераторов, и мне стало интересно, можно ли повторить звучание CMF со старых DOS'овских игр в MMF-ках (преобразовать OPL в MMF-voice'ы)?
Меня в музыке, записанной в треккерных форматах, разумеется интересуют не все подряд композиции. Я конвертирую IT и XM в MP3 и прослушиваю в MP3 плеере. Иногда из 1000 может не понравится ни одна, а иногда попадаются несколько очень интересных. Ниже по уровню, чем S3M, я не слушаю. Этой музыки можно бесплатно накачать много в интернете и, судя по тому что скачивать предлагают и западные порталы, законы об авторских правах тут не нарушаются. В основном это музыка "народная слова не знаю чьи". А музыку из арканоидов и прочих игрушек наверное уже плагиатить никто не станет :) Но там попадаются композиции с очень интересными авторскими находками в плане построения и применения эффектов. Конечно, не всё можно сконвертировать в МИДИ. Ведь сэмплы могут быть сделаны из чего угодно, а МИДИ - наборы конкретных инструментов и звуков. Но наверное первым препятствием становится ограничение МИДИ 16 каналами. Есть хорошая программа конвертации 2MIDI с сайта http://www.un4seen.com/ , но она не позволит создать МИДИ больше чем с 16 каналами. Другие программы могут записать больше миди каналов без привязки к миди стандарту и далее придётся "втискивать" их в формат. ВСТ МИДИ позволил мне использовать неограниченное число каналов, а индивидуальный банк на каждом канале позволил исполнять дуэты, трио и т.д. одного и того же инструмента на нескольких каналах. В модулях эффекты с одним инструментом на разных каналах используются часто и никакими хорусами-дилеями в миди таких эффектов не добиться. Мне показалось проще дать порядковые номера портабельным синтезаторам с встроенной библиотекой, чем искать какие-то другие пути. Благо размер невелик и даже 50 одновременно играющих таких синтезаторов систему не перегружают.
Сергей,
Do you have a working link to full version of XG-Wizard & XG-Gold? Thank you.
добрый день, решил приобрел YAMAHA QS300, у нее есть редактор звуков, называется XG-Gold. Здесь кто-то выкладывал,но ссылка не работает, не могли бы выложить файл. Буду благодарен.
Максим, XG Gold 3.0
https://yadi.sk/d/loLyC3Hv3Fro5E
XG Wizard 133b - https://yadi.sk/d/hKugqO-o3Frnvm
В Yamaha MU80 Wave ROM 8Mb (в отличии от S-YXG50, MU50, DB50XG, QS300 и.д.) 4 микросхемы памяти по 16Mbit. Где-то у меня были дампы этих микросхем + дамп программной ПЗУ в которой, помимо всего прочего, содержится и таблица параметров. Если еще актуально могу поискать...
Pat, добрый день, еще актуально, интересно посмотреть)
Контакт - https://vk.com/id452066199
Группа - https://vk.com/yamaha_vsti
Прошивки c Yamaha MU80:
https://drive.google.com/open?id=1mm4uwLjd0DOvsUkfe-x26lDCBvWqKPD0
Pat, спасибо)
Здравствуйте ! Такая проблема. Виндовс ХР ,звуковая карта creative sb audigy 2 zs platinum .Не хочет воспроизводить файлы МИДИ в программе visual arranger . В виндовс проигрывателе играют,но коряво.WAV файлы звучат нормально.Подскажите как исправить эту беду.
Всем привет! Какое чудо, что я нашел этот блог!
В общем вопрос. У меня есть Yamaha CS1x (это наверное родственник MU50). Так вот на нем есть один обалденный перформанс SCDoves.
Вот я его записал https://soundcloud.com/alelsey-sheleh/cs1x-performance-scdoves-sound
Так же я приобрел звуковой модуль MU128, в надежде, что можно как то перенести эти перформансы на него.
Так же есть еще интересные пэтчи https://cloud.mail.ru/public/2H5a/2cxKWoyBX от CS1x
Вообще чем их редактируют, и реально ли их в какой то степени достоверности загрузить в MU128? Пусть даже ручками как то адаптируя в случае отсутствия прямой совместимости?
И забыл спросить, можно ли такой звук воспроизвести на YX50 vst?
Sheleh,
Ваш CS1X есть "железка" ? Если да, то тогда обалденный звук именно по этой причине, поскольку звук дает его собственный звуковой процессор.
На других синтезаторах этот, как Вы говорите "перформанс" будет звучать уже совсем по-другому.
Честно сказать, не понятен Ваш вопрос. Если касаемо редактуры, тот тут действительно так, как Вам сказали на RMMedia, а именно есть программа XGEdit, только она узконаправленная и подходит для редактирования первых версий ситезаторов Ямаха.
Так что на Ваш вопрос "вообще, чем их редактируют" я бы ответил - ничем. Банк, что мы редактировали для S-YXG-50 здесь, был редактирован вручную, правкой шестнадцатеричного кода, т.е. без всяких муз программ, ну, кроме подготовки сэмплов, конечно.
//И забыл спросить, можно ли такой звук воспроизвести на YX50 vst?// - какой такой ? Что это за инструмент, хотя бы какой номер патча или "Program"-контроллера.
Кстати, Вы можете помочь, в том числе и себе, если сделаете дамп этого патча со своего CS1X, хотя бы прогнав ноты всей клавиатуры с достаточной длительностью. Если, конечно, звук ничем не фильтруется.
Евгений, здравствуйте.
Поздравляю вас с Новым годом ! Желаю счастья, здоровья и удачи в новом году!
P.S. Написал вам письмо по одному вопросу, связанному с реверсингом, но, видимо, немного переборщил с юмором и с критикой в адрес одного из посетителей блога. Вы, наверно, решили, что я идиот и отвечать не стали. :=) Жень, ну бывает, что под настроение пошутишь, потом думаешь, что зря, наверное, пошутил - могут неправильно понять. Но, как говорится - слово не воробей, вылетит не поймаешь. Так-то я, вообще-то, человек серьезный, так что вы сильно строго не судите :) А может письмо просто не дошло и попало куда-нибудь в спам? В общем, Жень, если вам не в тягость пообщаться, то подскажите как с вами лучше связаться? Я в ближайшее время хочу заняться реверсингом Yamaha S-YXG50, а без вашего внимания - будет тяжеловато. В том смысле, что заново изучать то, что вы уже изучили.
VEG, Здравствуйте Евгений и Народ)).
Подскажите, что сделать, плиз!
Виндовс 10-64. Установил VST MIDI Driver 2.21 - 15.01.2012
из файла midi-x64.zip (vstmididrv.exe syxg50.dll). Скопировал syxg50.dll.
Открыл настройки, Load VSTi и выбрал syxg50.dll.
Вкладки Advanced... нету. Всего одна, VST setting... Ещё есть кнопка Setting. Выбор полифонии
Как выбрать драйвер по умолчанию для системы? В настройках звука его не видно, только
Роландовский wavetable GM. Звуковая карта юсб Edirol (by Roland) UA-1EX.
В миди плеере Falcosoft Soundfont Midi Player, s-yxg50 выбирается.
Спасибо за внимание!
К сожалению, 10-ку временно удалил, а времени переустановить и все настроить не могу выкроить. Были образы почти всех систем, но "полетел" HDD и все накрылось одним неприличным словом =)). Так что проверить у себя не могу, будет ли у меня отображаться вкладка Advanced?
Ну а вы сами-то как думаете, если VEG написал в описании, что она должна быть, а ее нет, о чем это говорит? В общем, попробуйте найти еще одну 10-ку на какой-нибудь другой машине или поставте себе на виртуалку и проверьте. Если появиться, то значит вам повезло, а если нет, то значит ее ни у кого нет на 10-ке и все работают на 7-ках или, вообще, на XP. Ну это кому нужна вкладка Advanced и правильно настроенный драйвер, имеется в виду ))
Инструкция писалась много лет назад под Windows 7. Видимо, сейчас способ настройки в Windows 10 изменился. Поскольку я пользуюсь вариантом с foobar2000, не в курсе изменений. Кажется, где-то здесь в комментариях упоминали, что теперь в Windows 10 можно изменить MIDI синтезатор по умолчанию только через стороннюю утилиту типа CoolSoft MIDI Mapper.
Спасибо большое! CoolSoft MIDI Mapper установил, разбираюсь))
Ну-ну… Мне особо интересует, Как «дизассемблировать» (разобрать на составные части) готовые voice (тембра), переконфигурировать каждый из элемент и собрать обратно…
Самый странный тембр в PSR-S700: Harmo Rain — всего одна октава - "яркий SAW-Brass-подобный синт и без «ціўкания»", а выше - «урезаная фильтром»… Теоретически, можно «сыграть» теми же звуками, изменив Coarse Tuning (RPN 2), но одновременно можно взять звуки только в пределах одной октавы.. если нужно взять аккорд больше — придётся использовать второй MIDI-канал с этим же voice.
Колупнув XGEditor`ские (SOL2/XGWorks) .tbl файлы (а они очень напоминают .ins, хотя, это скорее просто .ini), обнаружились «знакомые» XG BULK DUMP`ы. Захотелось мне эти .tbl подправить (осовременить, т.е. впихнуть туда следующие XG Bulk Dump`ы:
Так вот, поведение (реакция) реального (физического, материального) инструмента отличается от виртуального (программного) на приём XG Bulk Dump`ов (по крайней мере, сравнивалось с реальной PSR-S700)! Для реалки, размер Bulk Dump'a (указывающийся четвёртым-пятым байтом SysEx`а F043 004C hh mm ll ******* F7) должен быть указан обязательно верным (соответствующей группе, т.е. таблице, начинающейся с соответствующего low адреса, а под этой таблицей [Total Size: __].)! VSTi можно хоть 7F 7F написать – применит!
И для реалки и для виртуалки можно слать неполный XG Bulk Dump, однако реалка применяет тот параметр, что шёл до F7, а VSTi игнорирует, ну, или, как я понимаю, разрабы решили, что предпоследний байт XG Bulk Dump`а = "типа" контрльная сумма (хорошо, что и в VSTi и в PSR-S значение контрольной суммы может быть абсолютно любым, это вот для SCVA VSTi почему-то должна быть обязательно пересчитана верно, и это неотключаемо).
Так вот, хочу, чтобы научили движок поведению PSR-S`ок – чтобы неполный XG Bulk Dump интерпретировал предпоследний байт (до F7) как параметр, адрес которого уже автоматически отсчитывается от первого стартого адреса соответствующей таблицы (см. MIDI Data Format в Syxgctrl.hlp — каждая отдельная таблица - отдельный XG Bulk Dump), а ещё, опционально конечно же: обязательная проверка контрольной суммы (отсчёт которой ведётся после байт F043 004C, т.е. размер тоже учитывается).
Вот, привожу примеры Bulk Dump`ов (добавлены ещё от спецификации XG 2.00, SW1000XG и от PSR-S`ок)
Надо было бы проверить правильность моих «подсчётов» контрольных сумм, но, думаю, большинство тут верны… Там где UU - понятно, что неизвестно, т.к. остальные байты не указаны, ведь зависит от типов эффекта или ноты. Хотя, опечатки тоже не исключаю…
По поводу Drum Setup`а — практически бесполезная вещь, т.к. при смене программы он сбрасывается. А хотелось бы иметь возможность сохранять настройки нот даже после смены программы. Аж прямо говорится, нафига тогда предусмотрен F043 104C 00 00 7D 0у F7 (где у - номер Drum Setup)?
Т.е. даже если переназначить звуки (в некоторых моделях), а хочется их оставить при смене программы (чтоб не переназначать большую часть нот по ходу воспроизведения, а использовать тупо Program Change), придётся чуть ли не перед каждой нотой перенастраивать её соответствующим SysEx`ом. Т.е. даже NRPN`ы в этом плане удобнее (хоть и не предусмотрена подмена звуков, назначение Choke Group или приём Note Off)…
Я хоть понимаю, что доводить "до ума" для «полноценной работы в DAW» изначально не планировалось, но всё же хочется, чтоб была возможность хотя бы "выгружать из окна plug-in`а" midi-файл с SysEx`ом хотя бы нескольких XG Bulk Dump`ов, напр., текущие настройки эффектов (сразу два SysEx`а как для Reverb, Chorus так и Variation, хотя, для последнего можно ещё и пару XG Parameter Change для CBC1 и CBC2 Control Depth всунуть), определённых партий (может быть аж 9 XG Bulk Dump`а от MultiPart! Но, но в XG50 вроде как вообще 2, у многих PSR-S`ок – 3)… Похожим образом реализовали TwelveTone Systems в Dimension, Rapture и RXP — "хвать за картинку с «нотками»" - создаётся .mid файл в %Temp% с этим и нотками, только тут вместо нот - SysEx. Да, в ассемблере это реализовывать – та ещё морока… Если DM с этим разберётся, то хорошо…
Ну а уж с Drum Setup, так это вообще нужно 156 ГРУПП XG Bulk Dump`ов (по 78 нот с каждой группы Drum Setup`а, а групп может быть 4 или больше + простые XG Parameter Change SysEx`ы т.е. больше 900 SysEx`ов). А если отдельно каждый параметр (XG Parameter Request), то SysEx`ов было бы ещё в десять раз больше (over9000+ в буквальном смысле), конечно, многие из них особой пользы не несли бы. Но из-за сбрасывания Drum Setup`а при Program Change видимо для ямахи это норма, т.е., в «хорошо XG-накрученных midi-файлах» нужно вписывать не десятки тысяч SysEx`ов XG Program Change, а XG Bulk Dump`ы. (по 4-6 SysEx`ов на ноту, т.е. в 10 раз меньше)… Если б сброса Drum Setup не происходило, то можно было сэкономить даже мегабайты в таких midi-Файлах :) (т.е. не использовались бы повторяющиеся тысячи SysEx`ы XG Bulk Dump, и тем более десятки тысяч XG Parameter Change, а вместо них был бы одинокий Program Change)…
Про опечатки:
в первом абзаце после первого моноширного блока угловые скобки урезались между "F043 004C" и "hh mm ll…", там было __ __, т.е. должно было высветиться что-то похожее на F043 004C «__ __» hh mm ll **…** uu F7
ещё:
1) …движок интерпретировал в неполном XG Bulk Dump`е предпоследний байт (до F7) как параметр, т.е. не игнорировал его (или не считал что это типа контрольная сумма);
2) {CVP-609, CVP-705, PSR-S950, Tyros 4…5…} — Yamaha убрала возможность настраивать External`ы, для Vocal Harmony…
а выше, где размер 0012, можно подписать Tyros 1~3.
3) F043 004C 0001 04 00 14 07 60 F7 {PSR-950, Tyros 4}
а выше, где размер 0002, дописать ещё Tyros 1~3 и 5 (ага, чё-то только в четвёрке убрали выбор Melody Channel для Vocal Harmony)
4) …в большинстве случаев (навороченных верси PSR-s`oк) — скобка была не закрыта
Во сколько Data List`ов мне пришлось пересмотреть и пересверять (чтоб «выпутаться»)… Единственный адекватный и более-менее полный на то время Data List был только от CVP-900, т.к. там расшифровано больше SMF Meta событий Sequencer Specific: FF7F06 43730A 0004 01 — начальный такт (откуда начинать воспроизведение) 01 - второй такт по-умолчанию;
FF7F06 43730A 0007 7F — смещение отображения номеров тактов (т.е. затакты или Intro), или для удобства подсчёта номеров тактов в ансамбле, если синт воспроизводит Song не сначала, можно установить до сотого такта. Кстати, странно, что размер Meta-события в Data-List указан 07…;
FF7F15 43730A 0006 t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 ta tb tc td te tf — не смотря на то, что можно устанавливать значения в диапазоне 0~255 (будто пытаясь сделать очень громко этим событием), hardware инструмент (PSR-S`ка) ведёт себя совсем неожиданно — переустанавливает CC#7 громкость, смещая значения на заданное число, и итоговое число не должно превышать 127… фактически, даже если все числа одинаковы, можем получить разные настройки громкостей (т.е. какой-то канал очень громко, а остальные – слишком тихие).
FF7F15 43730A 0005 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F 4F — 4F – это буквы O, означающие типа Off. А вот что именно Off — я пока понять не могу. Но могут быть значения: 4B (K: Keyboard), 56 (V: Vocal Harmony) 5A (Z: Other). Ладно бы, если 'O' было типа "No", т.е. нет информации, но Off — что за ?
Кстати, у роландов-то тоже бывали проблемы с неполной инфой, причём то касалось даже не сколько SysEx`ов, сколько упущенных «замечаний» (типа см. секцию 3 – а секции 3 в тексте-то нет!) – откровенных непроверенных copy-paste, как в VSC: в impl_j.htm (японского help`а) конкретно сказано, что «Машина игнорирует значение контрольной суммы» (чего не скажешь о SCVA) – в impl_e.htm этого абзаца и вовсе нет. Но больше всего поражает противоречие между английской и японской версией справки. В impl_e.htm сказано, что есть ДВА способа передачи GS параметров - это индивидуальным Parameter Transmission и Bulk Dump Transmission. А в impl_j.htm указано правдиво, что есть только ОДИН способ передачи – индивидуальными Parameter Transmission (т.е. GS Bulk Dump не предусмотрен в VSC, так же, как и SCVA, так что XG50 в этом плане даже круче). Вот уж японцы поленились переводить на английский…
Про создание .mid файлов в папке %temp% — ещё нужно ж их как-то удалить, а то они имеют свойства накапливаться (как происходит при этих Cakewalk`овских DXi/VSTi, да и не только)…
«G~Lí†çh», в этих описаниях нет ничего полезного.
Alexys, когда-то давно, veg обещал написать макрос на FASM'е, предполагаю, что так и не выполнил своего обещания. Я не ошибся в своем предположении?
И еще хотел спросить: как у вас дела с 50-й Ямахой? Я так понял, что вы только качественные звуки в нее загрузили и все, а внутренности не меняли. То, что вы частотку подкручиваете, ревер меняете - это все так на любителя. Я когда-то советовал Владу - добавить лееры (довести их до восьми, чтобы с теми-же Тайросами можно было сравнивать и играть его тембрами, ну, в общем, для совместимости. Влад, вроде, соглашался со мной, но руки наверное, так и не дошли, да и знания тоже? =))
В общем, если нетрудно, раскажите вкратце, на каком этапе сейчас Ямаха?
DM,
Я начинал это делать, но в процессе выяснилось, что ссылки на фрагменты звуковых данных в wavetable иногда вложены друг в друга, иногда пересекаются, и иногда между ссылками есть окна с незадействованными данными. То есть оказалось, что в принципе нельзя красиво сделать то что я хотел — разобрать весь оригинальный wavetable на отдельные звуки строго согласно тому, как они используются в инструментах, и потом собирать их автоматически в идентичный исходному файл с возможностью модификации для желающих. Организовать такие макросы для сборки новых банков всё ещё возможно, но мне новые банки не так интересны, у меня основной интерес сконцентрирован на оригинальных банках. Может быть когда-нибудь и сделаю, я периодически возвращаюсь к своим старым проектам годы спустя. Если кому-то это нужно сейчас, проще не меня ждать, а самому разобраться в синтаксисе FASMG, и написать подобные удобные макросы для сборки wavetable и таблиц инструментов. Там ничего ультра сложного.
DM, а что, почитать блог более подробно влом чтоли ? Влад и Астемир уже неоднократно давали здесь ссылку на наше сообщество в ВК. https://vk.com/yamaha_vsti
Все Ваши усмешки беспочвенны. Влад достиг уже такого уровня, что вполне может полностью перекомпилировать двиг, не говоря уже о файле настроек ! Там не только "частотка", но и битность, и количество лееров на инструмент, и предельный размер банка, и полифония. Качайте, да слушайте на здоровье.
https://web.archive.org/web/20190318033839/https://kode54.net/vstmididrv.exe - актуальная ссылка на софт-синтезатор. Пока работает.
Я нубас в этих синтезаторах виртуальных, но мне очень понравилось звучание мидяшек в foobar2000 (установил по инструкции плагин).
Можно ли это чудо прикрутить в AIMP? Там совершенно другой звук какой-то не столь насыщенный. А Ямаха порадовала. Ну или может саундбанк какой посоветуйте?
Никогда не пользовался AIMP. Можете спросить на форуме поддержки плеера, умеет ли он использовать VSTi для воспроизведения MIDI.
Здравствуйте. Сегодня впервые решил воспользоваться вашим чудесным инструментом. Загрузил его в Сонар. Но вот беда - вижу только 127 инструментов GM. А остальные XG где?
syxg50.ini прописал, как указано в справке, лежит вместе с dll.
Snork, банки переключаются при помощи SysEx-команд из справки по S-YXG50 (в интернете есть инструкции). Shiru делал удобный переключатель для Reaper, скачать можно тут. Наверное, что-то такое можно и для Sonar сделать. Я не музыкант, музыку сам никогда не писал, так что больше деталей не знаю.
Спасибо, но мне для Reaper без надобности. По идее, банки переключаются прямо в секвенсоре, ну или с помощью миди-сообщения. Ни то, ни другое мне не удалось, не работает.
Когда-то у меня была Yamaha SW60XG. Ноты писал в CakeWalk, а все эффекты и даже выбор инструментов - в XG Edit, настройки сохранялись в файл *.xge. А теперь не знаю, как эти настройки извлечь из этих файлов. Сам XG Edit даже не запустить на современной винде, чтобы хоть посмотреть, какие там инструменты и какая обработка. Может кто знает, как подружить XG Edit и этот VST?
Поставил foobar2000, чтобы проверить, как это работает в нём.
В Advanced → Playback нет никакого MIDI Decoder.
Snork, а плагин foo_midi поставили? Инструкция писалась в 2016. Возможно, в последней версии плагина настройки переехали куда-то. Ищите где там настройки касательно VSTi.
VEG, всё выяснилось. Я почему-то поставил старую версию плеера (мне казалось, я её здесь и взял). В новой всё работает. А инструкцию лучше переписать, там всё иначе теперь. Спасибо.
Тестируем новая версия здесь. Все настроек VSTi сохраняются в регистр. Добавлена поддержка ASIO и выбор режима ASIO | WASAPI Shared | WASAPI Exclusive.
Как уже VEG объяснял, конфигурация пользует vsthost только чтобы загрузить VSTi и показать настроек, поэтому драйвер нужно перезагрузить после перемена настроек. Обычно это делается с перезагрузки DAW.
Вообще, очень не хватает MIDI выхода из этого VSTi, ведь для того же SONAR`а (или ещё более древнего Cakewalk) можно сделать CakewalkStudioWare панельку, которая способна ОПРОСИТЬ настройки инструмента (будь то с реального MIDI-порта или виртуального) с помощью XG Bulk Request (или по одному параметру - XG Parameter Request) System Exclusive событий, и т.о. настроить позиции РЕГУЛЯТОРОВ (врочем, как и в XGE). Если syxg50 понимает XG Bulk Dump`ы, то почему бы ему не понять Request`ы? Ну и заодно вообще хотелось бы узнать, какие у него "размеры групп (таблиц)"… Snork, так как же *.xge файлы? Теоретически, можно попробовать "повыдёргивать" оттуда значения и "понавствалять" F043004C007F00F7… программному syxg50 пофиг на непрвильное значение "размера группы" (007F) и контрольную сумму (00). Сложность только в том, как узнать, по каким смещениям файла находятся значения конкретных нужных адресов (тех параметров, которые точно были изменены)…
Теоретически, можно ковырнуть родные .syx и .xge (типа BAMBOOZE.SYX и BAMBOOZE.XGE, DERV.SYX и DERV.XGE, HEROS.SYX и HEROS.XGE, ну и т.д. — ведь полный размер SysEx`а стабильно 12990, а XGE — 8672 байт.), чтоб понять где какие адреса, чтобы составить нужные SysEx`ы для "восстановления" нужных настроек…
чёрт! забываю, что угловые скобки "запрещены" (надо было в "tt" вписывать)…
Короче, ловите шаблон "адресов" файла XGE!
здесь просто взяты из Settings_and_Sysex\ENTRE2.SYX — чисто для ориентации, ну а "отсутствуютщий байт" в файле ENTRE2.XGE — контрольная сумма-- (можно ставить любую).
Ну а всё что с адреса $0E10 — каждые 16 байт - параметры ноты 0D до 5B сначала первого Drum Setup, затем второго, ну и последняя группа по смещению $21D0 — нота 5B четврётого Drum Setup`а! Если в вашем .XGE смещения не такие (не соответствуют своим значениям), то, видимо те были настройки от какого-то другого "стороннего XGEdit`а"… Вот чем оказался лучше "XG Editor из XGWorks" — тот хоть явно даёт сохранить только в *.SYX (а "*.xge" не поддерживает вовсе)!… Но если всё так, то вырезайте с нужного смещения ($xxxx) нужные значения для определённых адресов параметров из .XGE файла, затем после F043004C +размер группы и адрес: сюда вставляйте. А вместо байта с "--" нужно вставить любое значение в диапазоне 00…7F — syxg50 всё равно проигнорирует его, т.к. любой байт перед F7 в XG Bulk Dump`е является контрольной сумме, и syxg50 просто "лень" её сверять (в отличие от Roland SCVA)
Вот такой нехитрый "disassemble" за пару часов… повезло, что в .XGE сохранили байтами, ведь значения-то все 7-разрядные (могли бы и "упаковать")…, тупо, что нету значений параметров для адресов MultiPart 70…73 (Bend Low Pitch Control…EQ Hi Gain) и MultiPart Additional (74…7F), и вообще даже странно, куда подевались XG Plugin SysEx`ы и остальные Insertion`ы…
«G~Lí†çh»
А это вообще здесь к чему ?
Удивительно, как трудно, порой, доходит до людей, что "системное исключение" - это програмный код, который формирует только хост. Это не настройка, не пресет, которую можно сохранить как-то там отдельно. Все, что придумано кроме - это надстройки и сохранение происходит только в этих надстройках. А вот эти надстройки уже есть всякие эдиторы, консоли и прочие ручки, которые можно покрутить. Самому синтезатору абсолютно по барабану, откуда на его интерфейс приходят команды, лишь бы "розетки" совпадали и команды были соответствующие.
Потом попробую скачать
Alexys, System Exclusive уж очень далёк от "программного кода", и гораздо ближе к стандартным MIDI-командам. Например, у коргов есть Program Change, которые выполняют не выбирают конкретную программу определённого канала, а запускает/останавливает стиль, выбирает определённый STS стиля, переключает на определённую вариацию стиля… Ничего не напоминает? У ямах это реализовано только с помощью "системных исключений"! Для старых упрощённых самограек — исключительно Meta-событием SMF Sequencer Specific, которое как раз и невозможно отправить инструменту по MIDI (т.е. оно-то работает исключительно локально, т.е. там, где MIDI-файл воспроивзодится, туда и применяет)!
Я лишь прошу, чтоб синтезатор позволял выводить MIDI-команды (а конкретно, System Exclusive, ещё конкретнее — XG Bulk Dump), даже при отсутствующей "рулёжки" в самом интерфейсе синта! Просто пусть выполняет обратное действие, которое синтезатор делает при приёме данных XG Bulk Dump`ов: вместо применения значений, пусть считывает и отправляет хосту или на другой MIDI-выход (виртуальный, или же РЕАЛЬНЫЙ СИНТ), чтоб потом можно было записать в MIDI-файл! MIDI-сообщение для такого опроса значений уже документированы!
«G~Lí†çh»,
SysEx и есть MIDI-команды. Оно так называется именно потому что "исключает" из стандартного блока команд какие-то, заданные, например, вручную. И сам кодSysEx есть именно часть програмного кода, который запускается в блок. Под блоком я имею в виду фрагмент кода, заданный или имеющийся в MIDI-файле или поступающий с секвенсора, или с консоли управления, коей является клавиатура или кнопки-ручки "железного" синта.
А вот то, чем откликается тот или иной аппарат - уже дело производителя. На одну и ту же команду у Коргов будет одно, у Роландов - второе, а у Ямах - третье, поскольку это уже выпендреж производителя.
Поэтому вот это
- уже следствие, а не причина.
- именно так.
А смысл ? Синтезатор есть приемник команд, а не передатчик. Какой смысл выводить из него команды, если эти команды заданы хостом извне ? Не проще ли брать интересующие команды с самого хоста ? Что такое XG Bulk Dump ? Если это дамп (сохранение в файл) блока команд, выводимого хостом, то эти команды прекрасно лежат в MIDI-файле, зачем их выводить отдельно ?
Тем более что команды формируются всегда только хостом и ни чем другим. Хост их и сохраняет, если умеет. Например, Cubase умеет.
Это все ФЛ-ка людей развратила, когда пошли синты с, типа, сквозным каналом управления, когда на один канал можно "накинуть" несколько синтов, цепляя их последовательно друг за другом. Хотя, того же самого можно достигнуть, если запараллелить выход хоста, но это только физически, добавив еще один кабель. С виртуальными, конечно, такого не сотворишь.
эти команды можно задать "сквозь" хост реальным синтезатором (той же PSR-кой) в режиме реального времени. Сейчас же приходится нажимать запись, и повторять все эти действия заново (и то, боясь не пропустить что-нибудь, или «перекрутить»). Некоторые секвенсоры поддерживают ретроспективную запись, но опять же это займёт больше времени.
Существуют VSTi, у которых есть MIDI-выход, и есть такие, которые выводят SysEx`ы.
Представьте ситуацию с реальным XG50. Подключили один секвенсор, запустили MIDI-файл, и каким же образом сохранить настройки для другого секвенсора (или СЕКВЕНЦИИ, т.е. для другого MIDI-файла)? По новой всё накручивать?
Вот для этого-то и нужен XG Bulk Request, чтоб в секвенсор/хост вернуть все эти настройки.
Для чего же это нужно в VSTi? Да банально всё по тем же причинам!
1. Импортируйте MIDI-файл в секвенсор (поддерживающий SysEx`ы).
2. Запустите воспроизведение. Доиграйте до того момента, когда возникнет "нужная настройка" для новой композиции.
3.ачем "выколупывать" из предыдущей секвенции (MIDI-файла) SysEx`ы и из каждого MIDI-канала выискивать те PC,CC, которые применились в этот момент, и играли раньше?
Естественно, там настройка RPN Pitch Bend Range и Coarse/Fine Tuning обратно не получить, но уже хоть что-то.
и даже если есть реальная PSR`ка, поддерживающая всё то, что есть в XG50 (не меньше), то тогда проще уж воспроизвести тот MIDI-файл на MIDI-порт реальной ямахи, а потом запросить уже с неё, чем возиться с S-YXG50.
А когда хранятся отправленные с реальной ямахи данные уже давно, и её под рукой (с собой) нет — вместо неё другой MIDI-контроллер — тут главное "не воспроизвести сначала", т.к. всё сбросится из-за наличия старого XG Bulk Dump`а в начале (хотя, как в том же Cubase, можно заглушить, если оно отдельным клипом)…
И, что… нужное состояние уже в S-YXG50, его оттуда уже никак не вытянуть… что делать? Смотреть, что накручено на MIDI-контроллере / запускать ретроспектвную запись… Хорошо, когда в контроллере есть экранчик с индикацией значений! А есть такие, у которых можно запросить текущие состояния регуляторов, но они же не поймут XG Bulk Request`ы…
Нужно перенести точно такие же настройки (либо только часть) в другой MIDI-файл, или даже если S-YXG50 открыт в SAVIHOST`е, но подключен несколькими вирутальными MIDI-кабелями, задействованными разными секвенсорами!
Особенно плохо, когда в MIDI-файле огромная куча XG Parameter Change вместо XG Bulk Dump`ов, а Cubase вообще обрывает добрую часть SysEx`а в List Editor`е, что не всё видно (хорошо в SONAR`е видно больше, но тот
падластирает мета-события SMF Sequencer Specific). А ещё помимо кучи XG Parameter Request имеются ещё и PC, CC/NRPN (типа GM-совместимость)… Т.е. в итоге, ковыряться приходиться не в поиске готовых XG Bulk Dump`ов, а именно среди прописанных в MIDI-файле событий. С эффектами-то проще, найти эти SysEx`ы в готовом MIDI-файле — не проблема! Это чуточку сложнее в Drum Setup`е (на готове иметь для импорта 7 десятков MIDI-файлов с XG Bulk Request для каждой ноты сразу для обоих Drum Setup), и вот самое сложное - MultiPart — с реальным XG-устройством проблем никаких нет, ведь всё равно играет партиями, а не каналами: XG Bulk Request — и, пусть не в виде CC и PC, но зато хоть какая-то гарантия в виде XG Bulk Dump (жалко, без RPN`ов)… А с S-YXG50 вот такая подляна, рассчитана лишь только для прослушки уже готового материала (MIDI-файла)!«G~Lí†çh», а вообще, на кой черт оно вам сдалось ?
Ну так задавайте, в чем проблема ? Как правило все хосты это поддерживают, для того они и хосты. Можно ж прописать каждый контроллер по тдельности, ничего не теряя.
Что значит "ретроспективная" ? Автоматизация была испокон века.
Вот, честно говоря, я не понимаю, зачем нужно команды ВЫВОДИТЬ, когда они должны ВВОДИТЬСЯ в синтезатор, чтобы он играл то, что нужно. Вы думаете, что выведенные команды "звучат" как-то иначе после ввода их в синтезатор ? Как-то фильтруются, меняют свое значение ?
Я представляю только то, что имею дело с непрофессионалом. Вообще-то синтезатор подключается к хосту, а не наоборот. Зачем по-новой все накручивать, если в мидишке все уже есть ? На то он и файл, чтобы хранить все значения всех контроллеров. Это такой же дамп потока команд. В чем проблема сохранить настройки этого файла в другом файле просто скопировав его и набрав новые ноты ? Да даже можно не набирать, а скопировать с нужного. Проблема вообще ни о чем ! Все хосты поддерживают ЛЮБОЕ редактирование, в том числе и копипасту !
Собсноэто и есть ответ на Вашу проблему. Сам спросил, сам ответил. Что тогда надо ? Будут ли делать выход в Xg50 ? Нет, не будут. Потому что не нужно. Нужно просто нормально научиться работать с оборудованием и не страдать ерундой. Контроллер 121 в помощь.
Именно тут-то как раз головная боль! КАК? Конечно, это просто со многими демонстрационными XG MIDI – всё хранят только в начале файла, и ничего не меняют на протяжении всей секвенции! А что вы будете делать, когда заданные в начале параметры абсолютно не соответствуют звучанию в середине? Приходится тратить минуты на фильтровку, поиск, выравнивание всех CC и NRPN`ов (разные значения CC6 у Vibrato Rate,Depth,Delay; EG Decay; эквалайзеры), и чтоб были только последния значения у определённых XG параметров в SysEx`ах!
Вот это с DRUM NRPN`ами придётся возиться дольше: искать NRPN LSB нужных нот, их параметры NRPN MSB и значения в CC6… (Что в прочем и с RPN)
Ну хоть PSR`ки как-то облегчают задачу с эквалайзерами — вписывают SysEx XG Parameter Change вместо NRPN`ов, но т.к. эти команды идентичны MultiPart, то их несложно выкурить парой XG Bulk Request`ов. Разница лишь в том, что в PSR-9000 у NOT USED параметров всё же документированы правильные значения Default, а у более новых — "несовместимые с XG" нули…
Для чего?
«G~Lí†çh»,
Заново переберу !
Получается, что вам еще и лень поработать ручками ? В любом редакторе инструменты для этих целей есть ! Если значения контроллеров не совпадают со значениями нужных параметров эффектов от синта к синту, то нужно просто изменять общее значение контроллеров редуктивно, в процентах, пропорционально. Как еще объяснить ? Например, у 1-го синта значение вибрато в 4 Гц наблюдается при значении 23 (контроллера). При том же значении у 2-го синта то же вибрато уже 6 Гц. Например, нужно с 6-ти уменьшить до 4-х. На сколько 4 меньше 6-и ? на 2, во сколько раз 4 меньше 6-и ? в 1,5 раза, а на сколько процентов 4 меньше 6-и ? На 33. Простая математика. Вот и считайте. Значение контроллера будет примерно 8. Да, нужно будет пересчитывать каждое значение (и иногда это даже быстрее), но, например, тот же Кубэйс поддерживает редактирование всех выделенных значений редуктивно, т.е. в общем для всего выделения. Имеется в виду MIDI-клипа в MIDI-канале, подключенном к синту.
В общем, вы просите не совсем того, что нужно на самом деле. У вас проблемы только лишь с вашей аппаратурой и это частный случай. Я, например, не знаю, что такое XG Bulk Dump, для чего он нужен, первый раз о нем слышу.
Для сброса всех параметров в дефолт.
Для эффектов в Data List/MIDI-справочниках описывают готовые таблицы значений — Effect Data Assign Table, а вот для NRPN нет! В разных синтах подобные Data Assign Table могут кардинально отличаться, а то и вовсе не поддаваться математической логике (хоть и в большинстве случаев – логарифмически). Раз уж речь о разных синтах, вот простой аргумент: LFO Frequency у ямах от 0.00, 0.04 … 39.7 Гц (для Wah Speed так вообще 0.1 …20.0 Гц.), а у Roland Sound Canvas и всяких JV/XP(S) — 0.5 … 10.0 Гц, что чуточку ближе к MODX`вскому LFO Speed — 0.1 … 9.925 Гц (у PSR-A5000, например, это EgMultiFx LFO Freq). Но ведь вообще вопрос был не об этом!
Интересно, какой же инструмент позволяет менять значения в SysEx`ах, при этом не портя остальное SMF содержимое? Уж ли не SAL (платное расширение для Sekaiju)?
А инструкции/справочные руководства для кого? Это альтернатива простым 9/10/12-байтовым XG Parameter Change – цепь значений разных параметров группы (таблицы) – действуют на любых "навороченных" PSR`ках, как и в S-YXG50.
В принципе, ради скорости работы, достаточно поддержки выгрузки MIDI-файла из S-YXG50 – заодно, помимо SysEx`ов, ещё с текущими состояниями (N)RPN всех MIDI-каналов. Или лучше — перетягивать MIDI-файл прямо из интерфейса S-YXG50!
А если сможет грузить в себя предустановки XGEditor из XGWorks/SOL2/SQ01 (*.XGP), и прочих сторонних, типа XGEdit95/XGWizard/XGGold/XGClint/XGMan, то S-YXG50 станет ещё и полезным для их конвертирования в "универсальную/естественную среду"!
Это в теории, а с практической стороны – что конкретно сбросывает? Мне лично этим контроллером (значениями 0, 1, 2, 64, 127) так и не удавалось сбросить ни посыл на реверб (заданный ранее с помощью CC91), ни на хорус (CC93), ни те же RPN`ы, причём не только для панельных партий (в столбце MIDI Reception явно установлены кресты напротив CC121), но и SONG партий (хотя нарисован кружок)!
Проверяю на "простецкой" PSR-295, которая, к моему удивлинию, реагирует на тот же RPN Coarse Tuning — тоже НЕ СБРАСЫВАЕТ перечисленные параметры при получении CC121! И даже изменённые посылы на реверб/хорус остаются! Хотя в MIDI Implementation Chart тоже конкретно указан кружок для приёма CC121! Ну тут хоть GM Level 1/2/Off/XG Reset/XG Parameter Reset поможет (что для панельных партий PSR-S700 и подобных не действует).
Вот у PSR-740 имеются значения Default даже Insertion`ов (DSP2…и далее), у PSR-S700 при XG Reset тип остаётся прежний, и даже его назначения контроллеров остаются изменёнными. Может у PSR-740 (а ещё надеюсь, у PSR-9000) работает CC121 как положено?
А то, выходит, проблемы с аппаратурой далеко не только у меня!
О, нашёлся-таки справочник (от ямахи QS300) где конкретно указано, что делает CC121
У QY700 Portamento Control почему-то указали значение 1.
Ну а по (N)RPN понятно: просто устанавливает в 16383 (CC98…101 = 127), фактически, не меняя сами параметры (как я понимаю, изменённый NRPN`ами ударник тоже сохраняется)…
«G~Lí†çh»,
Ну, так о чем я и говорил ! Для одного и того же значения контроллера значение величины будет разным от модели к модели.
Имелось в виду редактирование контроллеров. Хотя, если считать блокнотик для редактирования кода системных исключений, то его тоже можно назвать инструментом.
А системные исключения, на то и системные, что устанавливаются всего пару раз за композицию. Часто ли нужно менять значения величины задержки в Delay, например ? SysEx таким образом можно назвать начальными установками для той или иной композы, но не более того. Менять постоянно их просто не нужно.
Для пользователя, видимо ! У меня их нет, потому что нет и самого аппарата, к которому такая инструкция идет. А вот то, что это частный случай для вашей модели - уже становится видно.
И что ? Куда это деть ?
В который раз уже бред пишете ?!! Сколько можно ? Еще раз повторяю, любой синтезатор только лишь читает, воспроизводит то, что имеется в мидишке ! Насколько мидишка грамотно написана, настолько красиво синт ее и будет читать !
Кто-нибудь вообще понимает о чем этот бред ?
Контроллер 121 - это и есть XG Reset. Хоть в теории, хоть в практике. Специально не стал называть, чтобы сам разобрался. Но, видимо, не дано ! Сбрасывает значения контроллеров в дефолт. Посылы, возможно и не сбрасывает. Имеет два состояния - 0 и 1. Т.е. 0 и 127. Возможно работает только в GM1, возможно не работает для внешних устройств, возможно не работает от внешнего контроллера. Все возможно !! Разбирайтесь в свой аппаратуре сами ! У меня ее нет, не предвидится, да и на фиг нужно !