Yamaha S-YXG50 Portable VSTi v1.0.0 [2016/04/25] (MIDI-синтезатор)

Программный 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.

  1. Установите Falcosoft VSTi MIDI Driver.
  2. Если у вас Windows 8 и новее, также установите Coolsoft MIDI Mapper.
  3. Скопируйте syxg50.dll из yamaha_syxg50_vsti.7z в любой каталог.
  4. Откройте настройки VSTi MIDI Driver, нажмите кнопку Load VSTi и выберите syxg50.dll.
  5. Откройте MIDI Mapper и выберите VST MIDI synth в выпадающем списке Default MIDI synth.
  6. Готово! 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 без установки драйверов в систему, что более надёжно.

  1. Скачайте и установите плагин foo_midi с сайта foobar2000.
  2. Создайте в каталоге foobar2000 подкаталог с именем vsti и скопируйте в него файл syxg50.dll из yamaha_syxg50_vsti.7z.
  3. Откройте в плеере настройки, Advanced → Playback → MIDI Decoder → VSTi search patch, укажите в этом поле полный путь до созданного вами подкаталога vsti, после чего примените изменения и перезайдите в окно настроек.
  4. Перейдите в Playback → Input → MIDI synthesizer host. В выпадающем списке plug-in выберите Yamaha S-YXG50, примените изменения.
  5. Готово! Теперь 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.
  1. #1401
    «G~Lí†çh»

    на то и системные, что устанавливаются всего пару раз за композицию. Часто ли нужно менять значения величины задержки в Delay, например ?

    Так многие XG MultiPart параметры и управляются в большинстве случаев НЕ SYSEX`ами, а обычными CC и некоторыми NRPN (EG Decay, Vibrato Rate+Depth+Delay), которые легко достаются из реального XG-совместимого синтезатора (не XG Lite) банальным XG MultiPart Bulk Request`ом!
    В первой же группе XG MultiPart содержатся значения (в порядке появления), заданные следующими контроллерами:
    CC#0
    CC#32
    Program Change
    CC#7
    CC#10
    CC#93
    CC#91
    CC#94
    CC#99=1 + #98=8: CC#6, #98=9: CC#6, #98=10: CC#6
    CC#74
    CC#71
    СС#73
    CC#72
    CC#98=100: CC#6

    Обычными же контроллерами вся эта информация (для одного канала) в MIDI-файле занимает минимум 64 байт (если в виде Running Status сохранить), тогда как в XG Bulk Dump`е (с остальными неуказанными здесь параметрами) — полсотни.
    Зачем искать/переписывать/копировать перечисленные контроллеры по всему MIDI-файлу, если их значения можно мгновенно получить с синтезатора в один XG Bulk Dump? Вот когда есть реальное XG-устройство, то, чтоб зрение не напрягать, лучше проиграть этот MIDI-файл в него, остановить в нужном месте, воткнуть туда XG Bulk Request, нажать запись и получить ответ на XG Bulk Request от синтезатора.

    Контроллер 121 - это и есть XG Reset. Хоть в теории, хоть в практике.

    Ни разу не правда. XG Reset как раз сбрасывает то, что НЕ СБРАСЫВАЕТ CC121.

    нет и самого аппарата, к которому такая инструкция идет.

    нет, не предвидится, да и на фиг нужно !

    К сожалению, к современным аппаратам такую инструкцию в комплект не кладут, и приходится скачивать отдельно (пока сайт ещё жив). У меня тоже нет QS300, QY700, PSR-A5000, MODX (который XG-несовместим вовсе) и т.д., и не предвидится… Но именно из MIDI-справочников от других (чаще всего, старых) инструментов мне довелось обнаружить интересный функционал современных PSR`ок.
    С программным же всё настолько просто, что после работы с реальным оборудовании, понимаю, ещё больше понимаю, насколько тот "нищий" :(
    Есть одно "замечательное" дополнение для Cubase 5/Nuendo 5 (не старее) — XGE (XGEditor из XGWorks) – воткнуть в разрыв MIDI-дороги, что послана на XG VSTi. Вот в этом XGE как раз и можно извлечь многие пересланные через него данные в .syx файл, но этот гад делает всё обычными XG Parameter Change SysEx`ами (коих 125 километров), и это уже другая проблема!

  2. #1402
    Alexys

    «G~Lí†çh»,

    Так многие XG MultiPart параметры и управляются в большинстве случаев НЕ SYSEX`ами, а обычными CC и некоторыми NRPN (EG Decay, Vibrato Rate+Depth+Delay), которые легко достаются из реального XG-совместимого синтезатора (не XG Lite) банальным XG MultiPart Bulk Request`ом!

    Да никто и не говорит, что оно так управляется. SysEx задают начальное состояние.

    В первой же группе XG MultiPart содержатся значения (в порядке появления), заданные следующими контроллерами:

    Тут вообще-то в курсе, что это такое и для сего нужны ! Дальше то что ?

    Обычными же контроллерами вся эта информация (для одного канала) в MIDI-файле занимает минимум 64 байт (если в виде Running Status сохранить), тогда как в XG Bulk Dump`е (с остальными неуказанными здесь параметрами) — полсотни.

    И что ?
    Ну, сделали, ну воткнули в синт, а дальше что ? для чего это нужно ?

    Ни разу не правда. XG Reset как раз сбрасывает то, что НЕ СБРАСЫВАЕТ CC121.

    Контроллер 121 так и называется Reset All Controllers. Для устройства XG он будет называться XG Reset. Вотдаже специально не искал :
    https://mixcraft.ru/forum/thread55.html?
    Все, закончим пустой разговор !

  3. #1403
    «G~Lí†çh»

    SysEx задают начальное состояние.

    Некоторые и без них обходятся, воткнув только такие CC, которые возможно заменить всего парой SysEx`ов (и вовсе не использовать те CC и PC), получив ровно такой же звук.
    "Reset All Controllers", так же и в S-YXG50, не влияет на XG Multi Part параметры. Как я теперь понимаю, если уж CC121 действительно является сбросом всех контроллеров (т.е. не противоречит названию), то при получении синтезатором (программным/реальным) CC121 происходит:
    а) в получаемом XG Multi Part временно ставится параметр "Rcv.Channel"=7F, затем выполняет сброс всех PC, CC, PB, A.T., другие параметры партии во время сброса могут по прежнему меняться SysEx`ами в реальном времени, но получаемые ноты в партию всё равно не попадут, по окончанию сброса возвращает исходное (предыдущее?) значение Rcv.Channel для этой партии;
    либо:
    б) все параметры получаемого XG MultiPart временно блокируются от изменений, чтоб сброс всех CC и PC на них не повлиял! Во время выполнения сброса партия по прежнему способна получать/воспроизводить ноты в реальном времени, но изменить XG Multi Part параметры данной партии сразу не получится;
    либо:
    в) связь всех CC и PC (но не нот) временно с XG Multi Part прерывается на время сброса: CC7, 10, 71…74, 91…95 не смогут изменить параметры, пока сброс не закончится, однако всё ещё возможно менять их параметры непосредственно SysEx`ом либо как в случае с CC71…74, NRPN`ом (если тот ещё «не успеет установиться в Null);
    либо вообще б) или в) только для какого-то одного параметра на момент сбрасывания управляемого его СС или PC. Например, в момент сброса CC71, параметр Filter Resonance теоретически всё ещё можно изменить с помощью SysEx/NRP№161, ведь до сброса CC99 и 98 очередь ещё не дошла (либо уже прошла?)…

    Если же, во время выполнения сброса, партия может одновременно и получать/воспроизводить ноты и менять с помощью CC71…74 и 91…95 привязанные к ним параметры партии в реальном времени (без ожидания окончания сброса), значит название "Reset All Controllers" противоречивое, т.к. сбрасывает лишь только некоторые из них, а не сразу все!
    Где правда? Или я что-то упускаю, и есть ещё какое-то объяснение? Эх, надо код S-YXG50 смотреть…

    А XG Reset, тьфу, да чего же "приелося" мне это "словосочетание", уже давно меня убедили, что такого понятия в принципе не существует… — под ним я понимаю SysEx`ы "XG System ON" и/или "XG All Parameter Reset", выполняющие совсем иные действия.

    ну воткнули в синт, а дальше что ? для чего это нужно ?

    Что́ и в какой синт воткнули? Или правильнее спросить для кого? Вы ж так и не поняли (а ну теперь понятно кому это не дано)! Ещё раз, смотрите, как это должно быть "в идеале":
    "Перетянуть" (как MIDI-файл) параметры только той партии, над индикацией которой "оттянули" мышь с зажатой кнопкой на расстояние в [DragHeight],[DragWidth] (или подобных настройках у других ОС):
    – 41 значение от адреса [08 "перетягиваемой_партии" 00] в первом XG Bulk Dump`е;
    – 63 значения от адреса [08 "перетягиваемой_партии" 30] во втором XG Bulk Dump`е;
    – Дописать RPN, состояния PitchBend, A.T. CC1 (можно ещё и Assignable Controller 1) %XGMultiPart.RcvChannel% канала.
    – Если у "перетягиваемой партии" номер совпадает с %XGVariation.PartConnection% (на Connection Mode не обращаем внимания), то вписать туда ещё два XG Bulk Dump`а от Variation блоков (0021h значений от [02 01 40] и 0006 значений от [02 01 70] адресов).
    – Если %XGMultiPart.PartMode%=02 (что по-умолчанию у партии 09h) или 03, то помимо дописывания значений параметров заданного Drum Setup, хотелось бы ещё и NRPN Drum параметры %XGMultiPart.RcvChannel% канала (вот тут-то уже дофига байт, если сохранять «не отличимые от default» значения)… НО! У разных партий, даже с разными %XGMultiPart.RcvChannel%, может быть ОДИНАКОВЫЙ %XGMultiPart.PartMode%, т.е. XG Bulk Dump`ы от всех нот одного и того же Drum Setup тогда можно вытянуть из тех самых разных партий, ну хоть NRPN`ы могут отличаться, и то радует! А при %XGMultiPart.PartMode%=00 (Normal) NRPN`ы вовсе не нужны!
    Но вы представляете, сколько нужно писать кода, чтоб всё это реализовать? Если вам даже такая идеализированная реализация кажется "непонятным для чего это нужно", ну тогда, простите, это было бы гораздо удобнее реального оборудования с XG Bulk Request`ами: во время проигрывания MIDI-файлов в foobar вытянуть текущие значения параметров (или даже состояний контроллеров) прямо из окна S-YXG50 в MIDI-файл прямо "на рабочий стол" или в папку, затем зайти в секвенсор, и там "поиграть" этими настройками в любой момент, при этом даже помня, с какого MIDI-файла эти настройки были вытянуты!
    Из VSTi можно вытягивать MIDI-файлы прямо как в хост, так и даже мимо него (в папку/на рабочий стол), знаю это по опыту с Dimension Pro (даже подцепив вместо его родной exe`шки SaviHost, перетягивание тоже работает)!

    На System и эффекты пофиг, т.к. там только SysEx`ы, и вручную их уже найти гораздо легче. Да, Drum Setup 1 и 2 тоже, но тогда их привязывать к партии придётся вручную!

  4. #1405
    Сергей

    Добрый день. Я новичек в работе с midi. Можно спросить не совсем по теме? Есть возможность приобрести железо Roland sc-88 pro SOUND canvas, вопрос: будет ли модуль помимо GM GS работать с расширениями Yamaha XG (kar)?

  5. #1406
    VEG Автор

    Насколько мне известно, XG поддерживает только оборудование Yamaha.

  6. #1407
    Alexys

    Сергей,
    Работать он будет, но, возможно, не всегда корректно. Проблема совместимости здесь заключается в том, видит ли модуль поступающие на него команды или нет.
    Что имеется в виду под "kar" ? Тип файлов ? Файлы с расширением "kar" - это такие же файлы миди, только дополнены текстом (песен), расположенным в определенном таймкоде. Эти сведения образуют что-то типа временнЫх маркеров.
    Соответственно, любое миди устройство будет воспроизводить этот файл так, как он создан по формату, т.е. GM, GS или XG.
    По сути, достаточно сменить расширение kar на mid. По крайней мере, попробовать. Сломаться там ничего не может.

  7. #1408
    Максим

    Добрый день. Не могли бы Вы выложить или скомпилировать 64 бит версию данного плагина. Пытаюсь использовать его как инструменты в presonus notion 6, а он не может загрузить данный плагин, так как 32 бит версия. Нужны именно 64. Спасибо.

  8. #1409
    VEG Автор

    Добрый день. У меня нет исходного кода этого синтезатора. Все доработки были реализованы на уровне машинных кодов. Оригинальный VSTi выпущен Yamaha в 2003 году, когда 64-разрядные процессоры x86 ещё не были актуальны. Соответственно, существует только 32-разрядная версия.

    Попробуйте использовать VSTi-бриджи, которые позволяют использовать 32-разрядные VSTi в 64-разрядных программах.

Комментарии временно закрыты.