Программный 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.
DM
Реагируйте как угодно ! В личке. Адрес я прописывал. А здесь можно обойтись без флейма.
Слежу за блогом со второй (или третьей) страницы.. когда ещё даже намёка на флейм не было... Не писал, т.к. не смогу отредактировать потом свой пост, поэтому надеялся, что без меня можете обойтись. А теперь тут такой флейм, что просто "срочно" нужно делать возможность удалять свои же сообщения. Ну или хотя бы изменить цвет текста, не относящийся к разработке ЭТОГО проекта, под цвет фона.
Но, боюсь проект уйдёт слишком далеко, и поздно будет уже высказывать свои идеи. Если пропустить эту возможность сейчас, то потом придётся перестраивать всё заново. Если проект будет идти к тому, чтобы эмулировать звучание конкретных "железных" синтов, то нужно дать возможность переключать звучание конкретных тембров (один и тот же «Bank MSB» + «Bank LSB» + «Program Change», а не «только Program Change») через список всех возможных тембров, который можно было б в интерфейсе прикрутить. Если конкретнее, то, когда конкретный патч (MSB+LSB+PC) использует только единственная модель ямахи в мире, а другой патч — совсем другая, то надо сделать так, чтобы можно было использовать оба патча одновременно! А не "тупым переключением режима через Sys-Ex" как «из GM в GS» (хотя можно внедрить что-то типа F0 43 10 4C ?? mm ll pp ss aa bb cc F7, где mm - Bank MSB, ll - Bank LSB, pp - Program Change, ss - Серия синтов (SY, MU и т.д.), aa|bb|cc - номер серии, можно в «Nibbled» виде). Однако, нужны банки всех когда-либо существовавших железных синтезаторов, и ещё оптимизировать "повторяющиеся" бит-в-бит сэмплы, настройки (старт/цикл-регионы, корневые ноты)... Вряд ли такое вообще осуществимо, даже если были бы ресурсы (и материальные и духовные).
А если MIDI'шка вообще написана "как-будто" на GM, то тут или рандом, или "стандартно", или только "как написано" — 0-й банк =). Но когда нужно использовать именно старый тембр, тогда надо настраивать этот список. В MIDI формате не было предусмотрена такая возможность, и все ранее написанные миди-файлы для одного XG-синтезатора так или иначе будут звучать по другому на другом XG-синтезаторе (в т.ч. syxg50). Поэтому пользователь должен сам выбирать, какой звук он хочет услышать.
Вообще, надо сам MIDI переделывать. А то сильно много неправильностей в нём. Например, Channel Pressure должно было войти в список Control Change'й, он работает точно так же, как Modulation/Expression и т.п (к примеру CC#3), а вот Portamento Control надо было вынести в отдельный "статус-байт". Тогда не нужно было бы возиться с "полифоническим слайдом". Дальше я рассказывать ЗДЕСЬ об этом не буду, поэтому продолжу по теме.
Если в ямахе "намертво" зашиты аудио данные в 22k05Hz, то какой смысл сохранять те же сэмплы в два раза "тяжелее", если качество уже было потеряно? Если б синт не читал "готовые" сэмплы, а генерировал звук только по определённым настройкам при любой ч.д., то не было бы таких проблем, может, процессор чуточку больше был нагружен. (если только при смене программы синт бы "ненадолго подвисал", синтезируя новые звуки под каждую клавишу, и занося их "в оперативную память")...
И вообще, какого найквиста 44,1? Эта частота на пустом вымысле обоснована (лучше б установили, вернее, «узаконили» 65536 Гц или 2 в 16-й степени, зато в одной секунде 16-битного МОНО семлпа будет 128 килобайт).
По поводу барабанов — звуки, с одинаковым именем из мануала одной и той же PSR'ки могут иметь разные настройки.
В «295»/«340» Легче всего заметить разницу звучания одного и того же "SD Rock H" в наборах «Analog Kit» (соль) и «Electronic Kit» (ми) — разный Pitch // В мануале «E403»-й честно подписали "Snare Noisy" и Snare Noisy 3";
Похожий сэмпл звучит с отличаем между «Rock Kit» и «Electronic Kit»:
«340» — "SD Elec M" (соль). в «295» этот звук почти ничем не отличается, только у «Electronic Kit» (ре) он громче (в VST версии отличий больше). В мануале «295» вообще указано, что в «Rock Kit»'е (соль) это "SD Rock H", а на ноте ре находится "SD Rock L", так же как и в «Electronic Kit», однако на "ре" играет совсем другой звук — явная ошибка в мануале! // «E403» — "Snare Noisy" "Snare Noisy 2";
Несколько раз встречал «E403»-ю, но сравнить сами звуки с «295»-й и «340»-й так и не удалось
«295»/«340» — "BD Rock" (такое заметить труднее): «Rock Kit» (до) — «Electronic Kit» (си): он более "поджат" (или нормализован) // в мануале «E403» он подписан как "Kick Gate"
Так вот, сравнивил железную ямаху с "симулированой". Писал MIDI'шку "в кубике" под «PSR-295». Всё отстраивал так, чтоб "динамики с железяки не выпрыгивали", до тех пор, пока не воткнул в Phones, и в возврат в качестве «Внешнего инструмента» по линейному входу компа. Наслушавшись "нормального звука", переключил MIDI выход на софтовый XG2006LE... Всё! все инструменты (бас, пэд, лид) стали звучать совсем "не вкусно", в добавок вместо Dance Kit играл Standard Kit... По "наводке" «миди.ру» нашёл, где приписан там «Dance Kit» — на 113 (т.к. в PSR'ке - 28-й). Причём патч (MSB+LSB+PC) менять пришлось на двух дорожках (миди-каналах), т.к. на 10-м канале используется автоматизация на CC#74 (типа HF Cutoff). для "AnSD Q" по «295» (или "SD Analog 3" по «340»/ "Snare Clap" по «E403»), хэты и т.д. А Бас-бит ("AnBD Dance-2" по «295» / "BD Analog 3" по «340»/ "Kick Techno L" по «E403») без "обработки". Так вот на софтовой XG2006LE хэты и SD оказались гораздо громче BD.
Древнейшая «PSR-340» не воспринимает CC#71, CC#74, но имеет Variation. Возникает мысль, что эти Й*Пошки вечно где-нибудь, да что-нибудь УРЕЖУТ.. а нам потом собирай по кусочкам как хочешь.. Думал, может где-нибудь валяется ROM «340»-вки, т.к. в ней есть и Variation, и «Dance Kit».. (хотел бы сам, но своим рукам не доверяю, т.к. не представляю, как "ЭТО" сдампить и чем, не atmega же!).
А теперь про эффекты. Конечно, в железке уже всё отстроено, и надо знать, что нужно повырубать, чтобы услышать необработанный звук железяки, а в VST тупо "галочки" в интерфейсе. Понимаю, что интерфейс развивать надо "в последнюю очередь", но для начала хотелось бы видеть вкладку:
числа со знаком минус — "условные" (названия эффектов указал для "наглядности", тут должна быть "переменная строка", типа %s), их надо либо "найти", либо "сделать доступным" для изменения в интерфейсе... Если идти дальше, то можно сделать отдельную вкладку для реверберации, отдельную для хоруса/фленджера, а третью для Variation, и там указать конкретные настройки. Странно только то, что ни «Спецификации XG формата.PDF», ни http://www.studio4all.de/htmle/frameset090.html не учли, что LSB Реверберации в PSR'ках HALL 2 — 10h (16d), а HALL 3 — 11h (17d) (а вот в «PSR-340» почему-то ЭТО HALL 2, а на 16-м вообще пусто); PLATE 1 — 10h (16d), PLATE 2 11h (17d) и т.д. Более подробную таблицу эффектов можно увидеть в предпоследних страницах мануала любой PSR/DGX/YPT... Меня заинтересовало, какие же настройки (время, LPF, HPF, DIFFUSION) для HALL 3? Или в LSB разряде указан не предустановка Hall/Stage/Plate и т.д., а ещё какой-то "подтип" эффекта?
Я на своём ZeRO MkII настроил эти SysEx'ы, попробовал "погонять" их через MIDI Thru в железную ямаху («PSR-295»). Железка реагирует только на переключение типа эффекта (MSB/LSB), но ни какие "глубокие" настройки выбранного эффекта не меняет (хотя по XG спецификации обязана!). Поставил MIDI Thru на софтовый XG2006LE — РЕГУЛИРУЕТ! Жалко только, что ни в железном («PSR-295»), ни в виртуальном синте нету Variation, и мне их не проверить =(
Вот если всё это замутить в интерфейс (в т.ч. список тембров), тогда syxg50 VST будет очень смахивать на XG Gold / XG Wizard...
В версии MU-50 16 mb бочка из Analog Kit мне нравится больше, чем в остальных (YMF, XG2006LE), но этот синт на NRPN GS'ный не реагирует! И ещё то, что можно регулировать панораму отдельного звука ударной установки, но нельзя одновременно регулировать его спад, не изменяя спад других (Decay). А если переключить в режим GS, то на ноте соль (G0) вместо SD звучит "палка". Поэтому, для MU-50 16 mb приходится "автоматизацию" копировать, и ещё гляди, чтоб синт успевал реагировать на изменения правильно! Приходится корректировать точки по "минимальной единице времени" (PPQ), между 31-й нотой (G0) и 36-й (C1) возвращать назад NRPN 1/100... вообщем, та же история, что и с Portamento Control...
Переключил всё на SYXG50 — там можно изменить панораму одной ноты и менять спад другой, не изменяя общий, но уже "бочка" не та =(
Аууч... не отобразило съел закрывающую
</a>
а ещё опечатки ("в добавок", лишняя точка после "Cutoff")
Мда. лучше б я не постил
Действительно, лучше б Вы не постили...
Тот самый случай, когда не захочешь, но будешь вынужден согласится с Alexys. Как сказал бы известный представитель "голубого шоу бизнеса": "Звезда в шоке")).
VEG, по-моему, не то, что можно, а нужно удалить посты «G~Lí†ch». Тем более, он и сам не против.
«G~Lí†ch», если хотите донести свои пожелания до VEGа, Wladа и их единомышленников, то не спеша все хорошенько обдумайте и распишите подробно по пунктам (1, 2, ... и т.д.), чтобы удобнее было комментировать. Постарайтесь писать максимально понятно и без всякой "самодейтельности" типа: "и вообще, какого найквиста 44,1? Эта частота на пустом вымысле обоснована (лучше б установили, вернее, «узаконили» 65536 Гц или 2 в 16-й степени...", пока это один из стандартов и его еще никто не отменял. А пока, будем считать, что "первый блин комом". И после этого "блина" хочется задать вопрос: "Что курит «G~Lí†ch» и где достать эту чудо-траву"? Без обид.
DM, не , ну 48К было бы интереснее всё же ) хотя бы потому что больинство ЗК уже точатся под 48К и кратные этой частоте частоты )
А если большинство начнет прыгать вниз головой с многоэтажных высоток, вы тоже последуете их примеру? Думать собственной головой не пробовали?
DM, звуковое оборудование действительно часто работает лучше (выдаёт более чистый звук) на 48kHz и на кратных, нежели на 44.1kHz. Я лично пользуюсь акустикой Edifier R2800, цифровой усилок которых заточен под 48kHz, и если на оптический вход подавать 44.1kHz, то появляется небольшой фоновой шум из-за плохой передискретизации. Проблему 100% решает ресемплер в плеере, который качественно и на лету перегоняет весь материал из 44.1 в 48, ну и системный микшер соответственно настроен работать на 48kHz тоже.
«G~Lí†ch», не выйдет, т.к. для этого нужны дампы самих "железных" синтезаторов, только так можно добиться звучания конкретных "железных" синтов, как в случае "полужелезного" YMF-724. Я когда то видел где то на каком то сайте, кто то продавал дампы многих "железных" синтезаторов, включая YAMAHA, и вроде YAMAHA MU и т.п., но к сожалению на данный момент найти мне его не удалось.
Если такие банки и были бы, то в их таблицах уже были бы прописаны все старт/цикл-регионы, и корневые ноты, а также регионы расположения на клавиатуре, возможно пришлось бы только некоторые семплы конвертировать из одного формат в другой, что бы их понимал софтдвижок, т.к. у "железных" встречаемых не многих мной синтов, семплы в банке смешаны в разном формате, многие из них мне не известны.
Хороший вопрос ! Смысл однако есть. Во первых конвертация в 44100/16-бит уже даёт положительный результат в звуке, но,, однако есть и ещё один вариант. Я очень долго не мог понять, как же банк 22050 dsxgwave, может звучать на "железном" YMF724 так, что отчётливо слышны высокие частоты которых в банке нет, что же делает этот "железный" и "волшебный" чип. Как то с Alexysem мы общались в ooVoo по поводу синтезатора, и он несколько раз упомянул о интерполяции, после я стал углубляться всё глубже и глубже в её изучение, перепробовал всё что только можно (множество методов), но все эти методы нарушали луп регионы в инструментах, и это говорило о том что все эти методы не правильные, и вот в один прекрасный момент я наконец наткнулся на то что нужно. Оказывается есть такая интерполяция Polynome 2nd degrees, которая идеально подошла с применением ресемплинга к данному банку, все байты в банке один в один совпали с луп регионами, а также не обнаружилось ни одного нарушения и сдвига (не считая ошибки самой YAMAHи), и звук стал на много лучше, т.к. теперь появились высокие частоты (похоже что чип 7x4 в реальном времени ресемплирует звук в 48000). На этом скриншоте в спектре можно увидеть изначальный банк (22050-8бит), а на этом скриншоте можно увидеть результат после применения Polynome 2nd degrees (44100-16бит), а также можно сравнить два синтезатора по качеству звука, и услышать разницу, особенно это касается высоких частот.
«G~Lí†ch», не проще ли было показать скриншот готового результата, просто многие не поймут что это. Над интерфейсом я часто думаю, у меня есть мысли по этому поводу, но говорить пока об этом рано, я ещё толком не определился.
Что касается разных синтов YAMAHA, то тут да, я с вами полностью согласен, часто можно найти довольно сильные отличия, хоть и все они XG. Вот например S-YXG2006Le, так, сляпали небрежно, но всё же прикрутили несколько категорий семплов из современных тембров, однако также попадаются нарушенные немного луп регионы, вроде в Choir ooh где то на низкой октаве, и ещё где то замечал.
Что касается MU50-16mb, я могу как нибудь и его конвертировать в 44100 16-бит, если он конечно кому нибудь нужен.
Хочу поблагодарить Astemirа, за то что выложил файл Yamaha.zip в посте #611 . Astemir , в нём оказалось много полезной информации, а также благодарю за описание набора Standart kit в ooVoo, теперь мне стало более менее понятно что же это за набор такой Standart kit. Так же на днях листал блог, и остановился на последним твоём посте, кое что вспомнил, то что уже со временем забыл. Вообще, эта информация касается непосредственно синтезатора и данного блога, поэтому Astemir, пиши больше на эту тему, эта информация лишней здесь точно не будет, а как раз наоборот :). Любой интересующийся этим синтезатором, возможно даже новичок, из таких постов узнает что то новое, а также поможет и освежить память.
VEG, у меня есть одно правило в жизни, которого я стараюсь придерживаться. Я никогда не спорю с людьми, которых я уважаю (особенно на публике). А вас я не просто уважаю, а очень сильно уважаю. А после того, как почитал ваши статьи на хабре и в контакте - вообще стал вашим фанатом)). Поэтому, если вы даже скажете, что земля плоская и держится на трех китах. Я готов с этим согласиться)). Большинство споров не стоят того, чтобы настраивать против себя людей, которых ты уважаешь или которые вызывают у тебя симпатию. Если вас действительно интересуют мои аргументы по поводу 48 и 44.1 Кгц, я могу написать вам на почту и мы, что называется, в спокойной обстановке, можем обменяться своими мнениями на этот счет)). А, вообще, VEG, на будущее: по вопросам Yamaha S-YXG50, никого не слушайте кроме меня, а то они вам тут насоветуют)). Даже Wlad иногда заблуждается в некоторых вопросах, что уж про других говорить. Это я к тому, что вы же не музыкант и во многих "фишках", что называется, "не в теме".
Wlad, как идёт процесс нормализации лупов ? Использовали секвенсор которй приложил или всё таки это никуда ? Хочется получить вылизанный базовый банк , но я не умею.
DM, Ответьте тогда на такой простой вопрос, почему Yamaha S-YXG50 становится по звуку по сути "инвалидом", если снять галочки Reverb, Chorus, а также Variation в настройках синтезатора, а также попробуйте поставить эти галочки в разных вариантах, и послушайте одну и туже композицию желательно в формате XG где используются все эффекты . Если вы так хорошо знаете этот синтезатор, то думаю для вас не составит труда объяснить почему именно так ведёт себя звук. (Вопрос только к DM)
Wlad, по той же самой причине, по которой некоторые женщины становятся "Бабой-Ягой" если с них смыть косметику)). Я ответил на ваш вопрос? И потом, Wlad, моя фраза: "а то они вам тут насоветуют))", к вам почти не относится. Я же написал, что даже Wlad иногда в некоторых вопросах заблуждается. Хотите поговорить об этом? Если вы считаете, что я вас этим обидел, то извините - не хотел. Если уж на то пошло, то наверняка найдутся какие-нибудь вопросы где может и VEG заблуждаться и я. Просто, я в свое время очень активно занимался программированием синтезаторов на C/C++. Поэтому, и позволил себе несколько нескромное заявление. Вот с кем бы мне точно не хотелось бы портить отношения в этой ветке блога - так это с вами и с VEGом.
DM, вы меня не обидели. Похоже в синтезаторе так ни кто и не заметил, что эффекты в его настройках отключаются не корректно. Дело в том что эффект микшируется с оригинальным сигналом, чем выше громкость эффекта, тем ниже получается громкость оригинального сигнала, но если любой эффект в настройках синтезатора отключить, то вместо байпаса на отключенный эффект, мы получаем разорванную линию этого эффекта, и т.к. эффект теперь разорван, оригинальный сигнал всё равно продолжает убавлять свою громкость, в зависимости от громкости эффекта, и вся музыка связанная с эффектами звучит не корректно, попробуйте, снимите галочки с эффектов, воспроизведите какой нибудь XG MIDI файл, и я думаю многие удивятся, что вместо полного отключения эффектов, на выходе появился "покалеченный звук".
Wlad, теперь понятно почему вы мне задали такой вопрос. Нужно было так прямо и написать, что есть вот такая проблема. Есть какие-нибудь мысли на этот счет? А то стороны это выглядело как - если вы такой "крутой", то подтвердите свою "крутизну" ответом на элементарый вопрос. И я подумал, что Wlad обиделся)).
Wlad, а вы какими программами пользуетесь , когда "реверсите" Yamaha S-YXG50? Ну в смысле IDA, Ollydbg и т.п... какими конкретно?
DM, пользуюсь Ollybdg 2.01, PE Explorer 1,99 для просмотра и анализа кода, и IDA pro изучаю.
Wlad, а когда вы обнаружили проблемы связанные с байпасом на отключенный эффект? Связано ли это с какими-то вашими правками в коде или это баг Ямахи? Вы сами-то как думаете? Есть какая-нибудь своя версия или предположение?
Когда мы это обнаружили - не важно. Обнаружили при исследовании.
Собсно, то, что обнаружили не есть ошибка кода или обработки движком. Это просто "так сделано". Т.е. говоря аппаратным языком, это такой роутинг, распределение сигнала в схеме. Если движок полностью эмулирует физическое устройство, то тогда это была такая настройка устройства. Поскольку мы еще не знаем, какая именно схема распределения сигнала применена в двиге, то говорить точно нельзя. Но одно известно точно, что сигнал с инструмента идет через регулятор уровня напрямую, а не в дополнительный канал, как обычно.
Насколько известно, во всех современных микшерных устройствах, т.е. конкретно, в блоках сумматоров, используется так называемая "отправка", "Send", т.е. сигнал проходит напрямую в сумматор и при этом имеет еще один или несколько отводов, для подключения каких-либо устройств: эффектов, мониторов, анализаторов. Это удобно, так как не нужно разрывать основную линию сигнала, а всего-лишь подмешивать к основному сигнал эффекта. И таких отводов можно сделать множество, ограничение лишь только в нагрузочной способности выходного каскада усилителя. Но есть другой способ - подключить все отводы на один регулятор, а сам регулятор сделать балансным между основным сигналом и сигналом эффекта - регулятор Dry-Wet. При унифицировании аппаратуы, т.е. деления на модули, удобно такой регулятор установить на блоке эффекта, а не в микшере. Тогда это сильно упростит общую схему сумматора, что снизит шум и повысит помехоустойчивость. Это касаемо аналоговой аппаратуры.
В цифровой же "аппаратуре" не известно, "идет" ли там сигнал вообще, а если идет, то как. По идее, не имея физических ограничений, отправок можно сделать хоть миллион. И это было бы самым лучшим решением. Можно было бы повесить на контроллеры эти отправки и все. Хотя, может оно так и есть, просто с отключением Rever, Chor, Var, общая громкость снижается и инструменты мало того, что звучат голыми, так еще и довольно тихо.
Обнаружение этого явления НЕ связано с правками в коде, поскольку правок кода движка (кроме счетчика битности данных) еще не производилось.
DM, обнаружил давно, но на тот момент я не занимался изучением этого синтезатора, и поэтому со временем забыл про этот глюк. Проблема появилась когда мы настраивали Standart kit, т.е. каждый барабан по громкости, я Reverb обычно при помощи контроллера выставляю в 0, а в этот раз решил при помощи галочки это сделать, и всё настройки которые были сделаны при снятой галочки, оказались неверными по громкости, т.к. каждый барабан имеет свой уровень эффекта (Reverb,Chorus,Variation).
Если убрать галочку к примеру с Reverb, и этот эффект выставить в 0, то громкость инструмента не нарушится, но если начать прибавлять Reverb, то громкость инструмента начинает падать до значения 86, а с 87 по 90 громкость инструмента равна нулю, т.е. его вообще не слышно, и с 91 по 127 громкость опять прибавляется, только 127 это уже не максимальная громкость инструмента, а ~=100. С Chorus другая картина, при его отключении, чем выше значение эффекта, тем ещё выше громкость инструмента, т.е. к данной громкости прибавляется ещё громкость инструмента. Variation ведёт себя так же как и Chorus. Также при снятой галочке Reverb, нарушается панорама (работает не корректно), и возможно мн. др.
Мои правки в коде ничего общего с этим не имеют, это так сделала YAMAHA, правда не понятно зачем.
Думаю что этот баг нужно скорее всего исправить, правда это будет очень не просто, или убрать эти галочки вообще из настроек, т.к. они нарушают работу синтезатора в целом и не выполняют свои функции, и к тому же вводят в заблуждение.
Если честно, то пока нет, мне невдомёк, зачем выводить такие настройки, которые калечат синтезатор в целом.
Скорее всего, просто ошибочный код. Частота дискретизации 96kHz тоже заявлена как поддерживаемая, но как минимум эффект variation работает на ней неправильно. Это же первая версия VSTi, и Yamaha её ни разу не обновляла (или по крайней мере мне ничего не известно про обновления). Так что ошибки не исправлялись. Стоит проверить как на WDM или VxD версиях синтезатора — возможно, там нет этой ошибки. По крайней мере, судя по примеру что предоставил YAMAHA User, в WDM версии звук от variation другой, и на приведённом им MIDI на WDM-версии оно звучит более корректно. Хотя, конечно, возможно MIDI был заточен под WDM-версию, в которой на самом деле было неправильно :)
VEG, тут такой к вам вопрос, вам известно где в коде находятся эти переключатели ? (Revrb,Chorus,Variation), в прошлом вы работали с кнопкой HELP, и я предположил что возможно вы и эту информацию задокументировали.
0x10031510 — инициализация окна настроек.
0x10030AF0 — работа с контролами (0x10030CE5 — полифония; 0x10030CF8 — Reverb; 0x10030D04 — Chorus; 0x10030D11 — Variation).
0x10031200 — устанавливает начальные состояния контролов.
0x10030F10 — обработчик слайдера полифонии.
0x10030770 — сохранение настроек при закрытии диалога (0x10030867 — полифония; 0x1003087E и ниже три одинаковых блока — полагаю, что Reverb, Chorus и Variation).
Полагаю, что надо распутывать с последней функции. Там вызывается функция 0x10030890 при сохранении, которая позволяет устанавливать помимо этих трёх флагов ещё 17. Назначение трёх флагов что устанавливаются при сохранении настроек выяснить легко (просто поставить брейкпоинт и три раза сохранить, снимая по очереди одну из галочек в настройках). Проследить куда передаётся это значение дальше можно внутри этой функции, устанавливающей разные флаги.
Было бы любопытно выяснить назначение остальных 17 флагов, что позволяет переключать эта функция. Похоже, что движок синтезатора дёргает эту функцию через косвенные вызовы, поэтому выискивать все такие случаи нужно через отладчик — по перекрёстным ссылкам не видно.
Спасибо вам VEG за информацию. Я правда до сих пор ещё так и не понял, как ресурсы связаны с кодом, а теперь появилась реальная возможность во всём этом разобраться, а также найти и исправить все эти грубые ошибки в коде.
Установил сегодня виртуальную машину Virtual Box v4.2.6. На WDM софтсинтезаторе v4.23, эффекты Revеrb, Chorus, и Variation отключаются корректно, просто отключаются и всё, без всяких глюков, тоже касается и WDM который я выкладывал с 512 полифонией. Качество звука у драйверного образца хуже, довольно шумоват по сравнению с VSTi, да и в некоторых инструментах слышны отчётливо искажения в хвостах, особенно в 4мб банке, когда громкость инструмента достигает довольно низкой громкости. Что касается эффекта Variation, то да, он на обоих WDM действительно хуже реализован чем на VSTi, если взять к примеру эффект Delay LR и установить его громкость в 127, то у WDM концы эффекта просто грубо отсекаются, причём довольно рано, и это отчётливо слышно даже на малой громкости, а вот в VSTi, продолжают плавно затухать до самого конца (до 0). Также заодно протестировал Virtual Sound Canvas VA на Windows XP, запустился он сразу, а также и заработал, прослушал на нём около восьми MIDI файлов, а также покрутил его дополнительные эффекты, и никаких глюков при этом не обнаружил.
Я тоже поэксперементировал с VSTi версией Ямахи. Причем, для чистоты эксперимента взял версию с минимальным вмешательством, которая с установщиком. Работает точно так же, как у Wlada - т.е. некорректно. Честно говоря, очень удивлен - его, что студенты программировали нанятые Ямахой, причем не самые лучшие)). С WDM версией поэксперементировть не удалось, потому, что скачал ее по ссылке VEGa c сайта Microsoft, а она оказалась без интерфейса. Удалил, попытался поставить другую, а система не разрешила - сазала, что у вас имеются какие-то не удаленные данные... Плюнул, не стал разбираться, но думаю, что результат будет как у Wlada.
Возникает вопрос: что делать в такой ситуации? Поменять "движок" на WDM-кий? Подозреваю, что это будет слишком сложно. Отключить выключатели эффектов? Для меня, например, - это была очень полезная функция, но можно, конечно, привыкнуть и обходиться без нее. В общем, тут, наверное, нужно спросить у главного реверсера этого блога: как лучше поступить в такой ситуации?
DM
Способ тут один - исследовать механизм и понять, как он работает. Хотите помочь - помогите ! Можете связаться с Владом или со мной.
Поскольку Вы сейчас наступили на грабли, то остается только посмеяться над тем, какая у Вас большая шишка ! (это шутка).
А вообще, если Вы действительно знаете C++, то это очень хорошо (намекаю на постановку задач).
Всё верно, нужно исследовать механизм и понять как он работает, а также сравнить код у VSTi и WDM этих функций, если повезёт и код будет сильно схож, то это облегчит задачу, к тому же VEG поделился всей необходимой информацией которая касается VSTi, что уже в разы упрощает задачу, осталось только разыскать эти функции в WDM, и разобраться как в нём реализовано отключение эффектов по сравнению с VSTi. В ближайшее время планирую этим заняться.
Очень не хотелось бы этого делать, т.к. синтезатор без этих функций смело можно считать неполноценным. Всё же надеюсь получится разобраться с этим недостатком, т.к. эти настройки являются очень полезной и даже важной функцией, т.к. при разработке или настройке, а также отладке инструмента, эти переключатели очень удобны, и не нужно крутить контроллеры к примеру через программу, а если синтезатор нужно перезапустить скажем десяток раз при разработке инструмента, это вообще сильно усложняет задачу, для этого проще и удобнее всего конечно же снять галочку.
Alexys, да не говорите. Сижу тут да плачу от боли и смеюсь над вашей шуткой)). В общем, и на старуху бывает порнуха)). Если бы Wlad не написал об этой проблеме - мне бы наверное и сейчас было ни к чему. Мы чаще всего прослушиваем миди-файлы и стили не свои, а чужие. А там пойди разберись какой канал отключился, а какой нет. На фоне всей музыки - это чаще всего не всегда очевидно.
Что касается всего остального, то тут нужно, наверное, немного пообщаться, хотя бы в этой ветке блога, выяснить потихоньку кто чего хочет от Yamaha S-YXG50, а там видно будет. Одно я знаю точно - если VEG вас (ну или нас) не будет опекать: подсказками, советами, небольшими консультациями - эта задумка, скорее всего, будет иметь длительное решение и может даже закончиться с нулевым результатом.
DM
Самое интересное, что сама мидишка то никак не управляет включением или отключением эффекта, т.е. эти настройки просто, как говорится, панты дешевые, пустышка. Видимо пришла разрабам мысля, уже опосля - "а не сделать ли нам отключение эффектов ? А зачем ? А просто так !" Никто не обратил внимание, что при таком "отключении" происходит разваливание половины устройства с потерей нормального управления.
А причем здесь свои или чужие миди-файлы ? Управления то все равно нет ни в тех, ни в этих.
Каналы по отдельности тут ни при чем, настройка то работает на все устройство сразу. Но заметно будет сразу.
Такое ощущение, что хозяин здесь не VEG, а Вы. Перестаньте уже "подавать с барского плеча". Мы все тут гости - так и вести себя. Как будто мы тут только-только все собрались и решаем, что делать и как быть. Мы уж полгода как трем эту тему. Какая разница, кто чего хочет от Ямахи ? Другой вопрос - кто что может делать !
VEG нас опекать не будет, у него своих дел много ! Также как и у нас. Если Вы так говорите, то значит не внимательно читали блог. В самом начале же ясно и четко написано, что синтезатор Ямаха адаптирован для прослушивания в плеере Фубар. Больше VEG ничего делать не был намерен. DMскачивайте программу и продолжим ругаться там, а не здесь ! :)
VEG, по поводу того MIDI файла , обратитесь на MIDI.ru к музыканам с PSR , ну или я могу попоросить одну девушку на её ямахе восспроизести и записать результат в файл. Но второе чуть проблемнее будет чем выложить файлик на midi.ru и получить WAV-ку от музыканта действующего )
YAMAHA User, тут чтобы понять как оно должно быть лучше сравнивать с железными синтезаторами того же поколения. То есть, например, с MU50. Wlad вот считает, что VSTi ведёт себя более корректно:
Возможно, ваш MIDI был записан с расчётом на резкое затухание, из-за чего при появлении плавного затухания оно немного «сломалось».
DM, так просто достать движок из WDM-драйвера не получится. Технически конечно возможно организовать работу даже VxD-драйверов S-YXG100 PVL в виде VSTi, но это просто огромнейший объём работ — сложно оценить сколько времени понадобится, но явно от года и более. Можно написать враппер, который будет загружать драйвер, создавать ему виртуальное окружение, будто он устанвовлен в целевой ОС, а снаружи этот враппер сможет прикидываться VSTi или чем ещё угодно. То есть внутри этого враппера нужно будет реализовать эмуляцию тех частей ядра ОС, которые нужны драйверу. Плюс этого подхода — можно будет этим кодом запускать не только одну какую-то версию синтезатора, а вообще можно будет запускать разные версии.
Можно попробовать, конечно, переделать какой-нибудь один файл WDM-драйвера, разобраться как он работает, убрать всю обвязку, что работает с WDM, и заменить на своё API, не завязанное на API драйверов. Но это тоже огромный объём работ, и для каждого WDM-драйвера это нужно повторять независимо. Плюс для VxD-драйверов такой подход не подойдёт — там 16-битный код есть, и без виртуализации или эмуляции тут уже никак.
Обе идеи интересны. Особенно первая, поскольку она позволит запускать S-YXG100 PVL. Но за такую работу возьмётся наверное только совсем большой фанат этого синтезатора :) Потому что придётся убить ну очень много времени на изучение необходимых технологий и техник. Это не только реверс-инжиниринг, но и методы виртуализации, детальное устройство VxD-драйверов с точки зрения системы. Причём большая часть из этих навыков будет бесполезна вне этого проекта. Те же VxD-драйвера были похоронены вместе с Windows 9x навсегда, а тут не просто API изучить надо, но и разобраться, как оно работало со стороны ОС, чтобы эмулировать это поведение. То есть очень глубоко в этом нужно разбираться. И это помимо времени на написание соответствующего кода самого враппера и реализации виртуализации для запуска 16-битного кода (тут видимо придётся использовать методики что используют виртуальные машины).
Оказывается существует MU500 : https://www.youtube.com/watch?v=DJncVSOJZdc
YAMAHA User, MU2000 тоже есть: https://en.wikipedia.org/wiki/Yamaha_MU-series
VEG
ОЧЕНЬ жилательно ) если можете - сделайте )
Я тут подумал ещё насчёт эффектов и снятия галочек... а ведь можно пойти иным путём.
Можно переработать двиг так , чтоб снятие галочек НЕ ОТКЛЮЧАЛО эффект , а задавало значение эффекту равное 0 и уже иные значения отличные от 0 не восспринимало.
YAMAHA User,
Любой может. Вопрос только во времени. Если бы я бы был бессметрным, то я бы с удовольствием потратил на такой проект годик жизни (просто потому что это интересный вызов). Особенно интересно было бы разобраться с запуском 16-битного кода VxD-драйверов в чём-то вроде виртуальной машины. Но так как время всё же ограничено, приходится выбирать. Увы, но я не такой большой фанат этих синтезаторов, это очевидно хотя бы из того, что я с 2002 по 2016 год про MIDI почти не вспоминал. Просто нашёл старые MIDI, что слушал на Yamaha YMF7x4 в начале 2000-х, нагуглил S-YXG50, послушал — по воспоминаниям звучит аналогично, но установка была очень неудобной, поэтому и сделал этот патч.
Скрипт разборки и сборки tbl-файлов хочу сделать так как на его разработку вместе с информацией от Wlad мне нужно реально 2-3 полных дня работы, то есть относительно немного времени, зато «разобранный» файл, который будет собираться обратно в банк, послужит лучшей и наглядной документацией о внутреннем устройстве tbl-файлов. Но сейчас это в заморозке, и я застрял с другим проектом.
Wlad,
Увы, код там разный. Я до самого движка не добрался, возможно он и похож, но обвязка — очень разная. Внутри WDM-драйверов ковырялся когда занимался расшифровкой третьего самого маленького tbl-файла, который есть только в WDM-драйверах и, как оказалось, представляет собой лишь двоичный конфигурационный файл, настраивающий поведение драйвера.
Увы, но я поделился только информацией где находится работа с этими настройками в обвязке. Передачу этих параметров в движок ещё предстоит отследить (и я полагаю, что нужно начать с изучения функции 0x10030890 что применяет эти и другие флаги), и соответствующий код движка ещё предстоит найти и изучить. Я не углублялся, но полагаю, что моя информация сэкономила вам лишь пару часов.
VEG,
Я вот например не понимаю , а зачем именно ОТКЛЮЧАТЬ эффекты ? Ведь можно же сделать вот что :
1) когда мы снимаем галки (впрочем из можно переименовать в Force value 0) принудительно задавать эффекту значение 0
2) не реагировать больше ни на какие другие значения в секвенсоре отличные от 0
Если результат значения 0 будет полный Bypass , зачем городить полное отключене ?
YAMAHA User, чем то что вы написали отличается от отключения эффекта? Так оно примерно и должно работать, но в S-YXG50 где-то закралась ошибка. И проблема тут не в том, чтобы придумать, как оно должно работать, а в том, чтобы додуматься, как именно это сделать. Для этого нужно будет хорошо разобраться в этой части кода синтезатора. Это не занятие на вечер за чашечкой чая. Это гораздо более объёмная и сложная задача. Капитан очевидность тут не помощник, здесь только реверс-инжиниринг соответствующего кода движка может помочь.
VEG, вышк же с Wlad-ом это обсуждали и пришли к выводу что отключение эффекта и установка значения 0 устроены по-разному. И я понимаю что существует всего два варианта и оба с реверсом...
1) отреверсить эту часть кода на каждый эффект и написать именно отключение эффекта
2) отреверсить эту часть кода на каждый эффект , НЕ ОТКЛЮЧАЯ маршрутизацию прохода сигнала через все эффекты , но зафиксировать при снятии галочки установление значения 0.
Я думаю , что второе проще , потому что идти через отключение всех эффектов это перерабатывать весь конвеер , а озафиксировать значение 0 - это всё таки весь конвеер перерабатывать не надо.
VEG, да действительно, код у WDM по сравнению с VSTi разный, но похожие подпрограммы всё же встречаются, например чтение таблиц барабанов (случайно наткнулся), и самое интересное то, что в WDM движке очень много кода написано при помощи инструкций MMX по сравнению с VSTi. Заметил также что в VSTi встречается ещё и код SSE, и это наводит на мысль, не тот ли этот самый третий метод обработки (например чтения семплов), который выбирается в зависимости от поддержки процессором инструкций, время покажет.
Не вижу смысла адаптировать WDM движок в качестве VSTi, т.к. этот образец не блещет качеством, мало того что он шумный, да ещё и эффекты работают некорректно* (видимо из за экономии ресурсов ПК), да и выбор очевиден, между лучшим качеством звука в VSTi и отсутствием отключением эффектов, что не критично, или убить неоправданно уйму времени на то, что бы получить не качественный звук (движок), но за то с отключаемыми эффектами.
Тут я не совсем правильно написал (видимо о чём то задумался :)), я хотел написать, что VEG поделился всей необходимой информацией которая касается окна с настройками в VSTi.
Хоть код у WDM 4.23 и VSTi разный, однако удалось в драйверном движке (sxgxgwdm.sys) кое что найти:
Функция которая читает таблицы барабанов в режиме XG
В драйвере - 39BADh
В Syxg50 - 82B0h
Функция которая читает таблицы барабанов в режиме GS
В драйвере - 39C26h
В Syxg50 - 83B0h
14F3Ah - Похоже на установки эффектов и т.д., (easyset,reverb,chorus,variation,cpuload,poly,taskbar,waveset)
15074h - а это похоже на те же установки в окне setup (sxgsetup)
153D0h - замечено также - push 041B28_sxgsetup
15960h - waveset, выбор банка 2 или 4мб :
15ACEh - читается sxgmasys.tbl
Обновил пачку синтов : https://yadi.sk/d/EQ4zU2M53JXprQ
Отличий не много , YMF-724 которая здесь была последняя новая (правда до правки банка) и MUNT VSTi самая последняя версия )
Кстати , коргда собираетесь банк допилить который от исходной ямахи ? Я вроде приложил сюда музыку на которой можно при желании повышением питча и понижением питча выловить битые ноты.
Я писал где это сделать и инстурмент дал вот здесь http://veg.by/ru/projects/syxg50/comment-page-14/#comment-50946
YAMAHA User
Что значит "когда собираетесь" ?? Наглеете, братец ! Даже и не думали следовать Вашим "советам".
Еще раз объясняю: с банком все в порядке. Единственная коррекция, которая была (и могла быть вообще) произведена - это увеличение битности, т.е. из 8 в 16 бит. Самым главным было найти метод интерполирования, который используется в "движке" Ямахи. ВСЁ !
Искать ошибки надо только в инструментах, в их настройках.
Поскольку было решено произвести замену исходных сэмплов, то заниматься коррекцией старого банка сейчас не имеет смысла. Рано или поздно мы дойдем до каких-то ошибок в инструментах и, собрав нужную информацию, исправим их. То же распространится и на синт со старым банком.
Заметьте, никто, кроме Вас, не жалуется на "некорректность" звучания синта. Странно, да ? За то время, пока Вы здесь отсутствовали могли бы и найти своим способом те ошибки, о которых Вы постоянно упоминаете.
В общем, пост 661 будет пока единственным ответом на Ваш вопрос. (Хотя, если конкретней распишете, что за проблему Вы видите, то, может быть и решение найдется быстрее.)
YAMAHA User, хочу у вас поинтересоваться, а что значит : допилить банк который от исходной ямахи ? и выловить битые ноты ? , я понимаю что при дампе с синтезатора WAVEROM, из за разных ошибок могут получится так называемые битые семплы, а вот битые ноты, ни как понять не могу что это такое, может вы меня просветите ?
Кстати, придумал на днях механизм, при помощи которого можно вытаскивать семплы из HIPERSONIC 2 и не только из него, практически оригиналом, и с определением Root нот и их регионов. Очень мне в нём понравился ХОР (Male Aah HS2), оказывается он в HIPERSONICе состоит из 22 семплов, и каждый семпл используется на одну или две клавиши, не больше. На днях провёл эксперимент по импорту этого инструмента в YAMAHу, и результат получился довольно не плохим, если интересно, вот ссылка : https://yadi.sk/d/4Bw13soH3Jkv5c
Инструменты которые связаны с хором:
ChoirAah,Ch.Aahs2,NewAgePd*,NotreDam*,Susp Str*,ChoirStr*,Kingdom*,MelChoir*,S.Choir,ChoirPad*,ChorBell*,Echoes*,Ritual*
А в этой таблице, можно увидеть Root ноты, и регионы семплов на клавиатуре хора Male Aah HS2 в (из) HIPERSONIC 2:
DM, Вы как то интересовались совершенно новым инструментом в банке. Как то попался мне один плагин Church organ 2nd VSTi с довольно приятным звучанием, он на этом скриншоте, и мне очень захотелось из него вытащить семплы, но к сожалению они были то ли зашифрованы, то ли упакованы, однако со временем я добрался до начинки и этого плагина, оказалось что семпл там всего лишь один, и он довольно длинный, аж пол минуты и 32 бита Float. Новый орган находится в Bank 36 path 19 (от нуля), Старый Church organ я тоже заменил на новый, поэтому не перепутайте их.
Так же в недавних экспериментах с синтезаторными конфигами, в этом синтезаторе я создал новый банк (Банк 123), в котором находятся несколько новых инструментов :
Банк 123
38=Synth Bass Dig
39=Rubber Bass pulse
62=Digi synth Brass
80=Lead Pulse w
81=Saw lead Ett
Alexys
Видите ли , еслиб банк сэмплов был бы не в SMP и не в TBL , а в DLS или SF2 , то я сам давно бы всё исправил. Но поскольку автор/ы по каким-то причинем не хортят или не могут сделать чтение SF2 и аналогичных формтов - то я могу только напоминать о багах которые неможечко доставляют.
Я предлагал сконвертить банк в нечто более удобное для редактирования нежели один сплошной tbl/smp файл.
Wlad
Я имел ввиду вот что :
1) открываем то что в моём посте , открываем а какевалке и слушаем композицию , она надоедает , но что делать ?
2) понижаем питч немного и снова слушаем авслушиваясь в ноты и так до предела , пока не дойдём до самых низких нот например рояля
3) повыщаем питч и всё сначала... и та кпока не дойдём до самых верхних нот рояля...
Рояль гтов ? Тот который MSB 000 / LSB 000 / Patch 001 ? Отлично , вбираем MSB 000 / LSB 000 / Patch 002 и снова до упора... кааак только натыкаемся на битый Loop регион - правим. И так как минимум 127 проходов с повышением питча и с понижением питча... м учётом что питч можно поаысить на +64 и понизить на -63 , то предстоит 127x64x63=512064 прослушиваний этой композиции... надоест , я понимаю. Но банк у вас такой , что его редактировать нормальным не бинарным методом никак , потому и предлагаю сделать SF2 или DLS.
YAMAHA User,
Вам вроде как объяснили, что это непросто сделать. Если вы хотите сконвертировать банк в SF2 — сами возьмите, разберитесь и сконвертируйте. Если не получится, то хотя бы поймёте, почему ваш совет совершенно бесполезен. Если бы это было просто и не требовало массу времени — то уже давно кто-нибудь сделал бы.
Плюс нужно понимать, что без потерь перенести информацию из таблиц Yamaha S-YXG50 может и не получится. Вполне возможно, что там используются какие-то параметры, аналогов которых нет в DLS или SF2.
VEG
Сам банек SF2 у меня есть ) вот и хотелось бы чтоб синтезатор умел читать этот формат ) , вопрос лишь в том что будет ли это ? Да и в плане расширяемости SF2/DLS удобнее чем SMP / TBL. Но автору виднее.
Да и сделать обработку SF2/DLS можно по-разному... не обязательно делать полную зависимость от этих форматов и переносить туда всё с мясом. Достаточно просто структуру банка перенести MSB от 000 до 127 / LSB от 000 до 127 и номера пэтчей от 000 до 127 )
YAMAHA User, добавить поддержку SF2/DLS в S-YXG50 будет ещё сложнее, наверное на порядок как минимум. Исходных кодов у этого синтезатора нет, что сильно сужает возможности по его доработке. Впрочем, оно всё равно возможно, и если вы хотите потратить на это несколько лет — я бы с удовольствием пронаблюдал таким проектом, если бы вы им занялись.
YAMAHA User, тут вот у меня в архиве нашлись кое какие банки в формате SF2 и DLS, которые касаются YAMAHA XG и Roland GS, надеюсь вы в них найдёте что нибудь для себя интересное. : https://yadi.sk/d/BAjg_Kph3Jm8jX
Что касается конвертирования банка YAMAHA в SF2 и DLS, то лично я думаю, что человек в здравом уме такое делать не будет, т.к. это довольно сложно, мало того что надо знать хорошо формат банка YAMAHA, а также его синтезаторную часть, нужно ещё знать и формат к примеру SF2 или DLS. Даже при этих условиях, всё равно не выйдет его как нужно конвертировать, т.к. это всё же синтезатор, он к примеру берёт семпл в одно колебание, и синтезирует инструмент скажем из двух лееров, такие как Saw Lead, Bass+Lead, и мн.др., а также из одного колебания состоят некоторые колоколообразные инструменты, например Crystal, или Digi bell, и т.д., потому что опять же это синтезатор и он обладает очень большими возможностями в плане синтеза и его управлением, используя при этом огромное количество контроллеров как задокументированных так и не задокументированных. Даже если к примеру просто конвертировать банк YAMAHA в SF2, то из за отсутствия такого функционала в SF2, в банке просто окажется много инструментов потерянными, поэтому, что бы получить приблизительно оригинальный банк YAMAHA в SF2, это нужен такой конвертер, что бы он мог рендерить на основе синтезаторных конфигов ключевые семплы инструмента, но это очень сложная задача, которой я точно заниматься не буду, и кто нибудь другой, т.к. это не целесообразно. Да, сложно немного с YAMAHой, но ведь от этого зависит конечный результат, а так же затраченные усилия и потерянное время, которое после полностью себя оправдывают. Вот приведите пример хоть одного синтезаторного движка на котором можно создать свой синтезатор одним модулем, имеющий хотя бы половину функционала YAMAHA ?, а если например хочется поиграть в живую, на YAMAHA можно множеством контроллеров покрутить управляя звуком, слушать MIDI файлы и при этом также позволяет баловаться с контроллерами управляя звуком, а что может SF2 ?, толком ничего ! Поэтому YAMAHA User, советую вам изучить YAMAHу, и сделать себе нормальный синтезатор своей мечты, к тому же XG, а на SF2, на котором кроме "кастрированного" GM вы ничего не получите, а также вы можете на этом движке создать полноценный Roland GS, т.к. движок является не только XG, но и GS, а также и GM2 ! (зачем брать минимум, если можно взять максимум (возможностей из GM,XG,GS,GM2))
Так что хорошенько подумайте YAMAHA User, какой синтезатор вы хотите себе сделать, доступный и от безысходности используемый формат SF2 без всего, и толком ни кому не нужный, или изучить движок YAMAHA и владеть достойным синтезом ?, ведь потерянного времени не вернуть, подумайте хорошенько над этим. В конфигах YAMAHA ничего сложного нет, например Alexys сразу понял что к чему, и мы практически сразу начали менять барабаны в Standart kit, я и вам могу помочь разобраться с YAMAHой, если надумаете.
Что касается DLS или SF2 что бы этот банк понимала YAMAHA, то это в движке придётся переделывать столько, что куда проще будет написать редактор для самого банка YAMAHA !
Я занимаюсь только новым синтезатором, а старый сделал потому, что обнаружил подходящий метод интерполяции (который предположительно использовался YAMAHой в чипе YMF-7x4) который улучшает общее качество синтезатора в целом, и не нарушает циклы инструментов в отличие от предыдущих методов, когда как позже выяснилось, некоторые редакторы некорректно конвертируют семплы. Также в конфигх YMF-7x4 исправил ошибки которые допустила сама YAMAHA.
YAMAHA User, Вы наверное издеваетесь )))), вы хотите что бы я прослушал пол миллиона раз ваш MIDI файл, который склеен из нескольких треков в общей сумме времени в ~15мин. Вы если обнаружили ошибку луп региона, выясните какой инструмент, ведь это просто, либо на слух, ведь слышно например рояль если нарушен, или посмотрите на дорожках, ведь больше 16-ти инструментов в треке не будет, пролистайте эти инструменты в том же кейкволке на клавиатуре мышкой, и если найдёте ошибку то сообщите мне, и я её незамедлительно исправлю и обновлю синт, ведь это вам нужно, но ни как не мне, у меня другая задача, это сделать новый синтезатор, а также может ещё что нибудь интересное подвернётся, дампы YAMAHA например, которые можно адаптировать к этому движку, что бы получить что то новое, и т.п.
Wlad
Мы говорим совсем о разном )
Я имел ввиду , что в SF2 перевести исключительно сэмплы , а в двржке указать что читать инструменты из SF2 вклбчая такие вещи как Layers , Samples , Loops Regions и всё. Все остальные настройки типа настройка хоруса , ревера , velocity и прочего из SF2 можно напрочь игнорировать совсем... зачем нужен такой формат как SF2 / DLS ямахе ? Всё просто , для удобства доведения банка до ума , для удобства добавления инструментов и редактирования их ) грубо говоря SF2 для ямахи это тот же SMP только не склеенный одним непрерывным куском где можете вычислять инструменты , луп-регионы и прочее только вы и VEG , а нормальный , систиматизированный банк. Вот и всё что нужно для удобства ямахе на мой взгляд )
Сам же движёк синтезатора должен полностью оставатсья в ямахе и не должен использовать SF2 или подобную библиотеку иначе , как просто таблицу инструментов ) если это сделаете - вам же удобнее будет всё редактировать ) , добавлять изменять и прочее )