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. #701
    Alexys

    DM
    Реагируйте как угодно ! В личке. Адрес я прописывал. А здесь можно обойтись без флейма.

  2. #702
    «G~Lí†ch»

    Слежу за блогом со второй (или третьей) страницы.. когда ещё даже намёка на флейм не было... Не писал, т.к. не смогу отредактировать потом свой пост, поэтому надеялся, что без меня можете обойтись. А теперь тут такой флейм, что просто "срочно" нужно делать возможность удалять свои же сообщения. Ну или хотя бы изменить цвет текста, не относящийся к разработке ЭТОГО проекта, под цвет фона.
    Но, боюсь проект уйдёт слишком далеко, и поздно будет уже высказывать свои идеи. Если пропустить эту возможность сейчас, то потом придётся перестраивать всё заново. Если проект будет идти к тому, чтобы эмулировать звучание конкретных "железных" синтов, то нужно дать возможность переключать звучание конкретных тембров (один и тот же «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 тупо "галочки" в интерфейсе. Понимаю, что интерфейс развивать надо "в последнюю очередь", но для начала хотелось бы видеть вкладку:

    109 DIALOGEX 0, 0, 237, 160
    STYLE DS_FIXEDSYS | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
    CAPTION "XG DSP"
    LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
    FONT 8, "MS Shell Dlg", FW_NORMAL, FALSE, 1
    {
       CONTROL "F0 43 10 4C 02 01", 0, BUTTON, BS_GROUPBOX | WS_CHILD | WS_VISIBLE, 5, 5, 228, 64 
       CONTROL "00", 0, STATIC, SS_LEFT | SS_SUNKEN | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_GROUP, 10, 18, 12, 12 
       CONTROL "Hall 1", -2, EDIT, ES_LEFT | ES_AUTOVSCROLL | ES_READONLY | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 21, 17, 88, 14 
       CONTROL "01 01 F7", -2, STATIC, SS_LEFT | SS_RIGHTJUST | SS_SUNKEN | WS_CHILD | WS_VISIBLE | WS_GROUP, 112, 19, 42, 11 
       CONTROL "copy to clipboard", -3, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 157, 16, 73, 14 
       CONTROL "20", 0, STATIC, SS_LEFT | SS_SUNKEN | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_GROUP, 10, 35, 12, 12 
       CONTROL "Chorus 2", -4, EDIT, ES_LEFT | ES_AUTOVSCROLL | ES_READONLY | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 21, 34, 88, 14 
       CONTROL "41 01 F7", -4, STATIC, SS_LEFT | SS_RIGHTJUST | SS_SUNKEN | WS_CHILD | WS_VISIBLE | WS_GROUP, 112, 37, 42, 11 
       CONTROL "copy to clipboard", -5, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 157, 33, 73, 14 
       CONTROL "40", 0, STATIC, SS_LEFT | SS_SUNKEN | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_GROUP, 10, 52, 12, 12 
       CONTROL "Cross Delay", -6, EDIT, ES_LEFT | ES_AUTOVSCROLL | ES_READONLY | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 21, 51, 88, 14 
       CONTROL "08 00 F7", -6, STATIC, SS_LEFT | SS_RIGHTJUST | SS_SUNKEN | WS_CHILD | WS_VISIBLE | WS_GROUP, 112, 54, 42, 11 
       CONTROL "copy to clipboard", -7, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 157, 50, 73, 14 
    }
    

    числа со знаком минус — "условные" (названия эффектов указал для "наглядности", тут должна быть "переменная строка", типа %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 — там можно изменить панораму одной ноты и менять спад другой, не изменяя общий, но уже "бочка" не та =(

  3. #703
    «G~Lí†ch»

    Аууч... не отобразило съел закрывающую </a>
    а ещё опечатки ("в добавок", лишняя точка после "Cutoff")
    Мда. лучше б я не постил

  4. #704
    Alexys

    Действительно, лучше б Вы не постили...

  5. #705
    DM

    Alexys писАл:
    Действительно, лучше б Вы не постили...

    Тот самый случай, когда не захочешь, но будешь вынужден согласится с Alexys. Как сказал бы известный представитель "голубого шоу бизнеса": "Звезда в шоке")).

    VEG, по-моему, не то, что можно, а нужно удалить посты «G~Lí†ch». Тем более, он и сам не против.

    «G~Lí†ch», если хотите донести свои пожелания до VEGа, Wladа и их единомышленников, то не спеша все хорошенько обдумайте и распишите подробно по пунктам (1, 2, ... и т.д.), чтобы удобнее было комментировать. Постарайтесь писать максимально понятно и без всякой "самодейтельности" типа: "и вообще, какого найквиста 44,1? Эта частота на пустом вымысле обоснована (лучше б установили, вернее, «узаконили» 65536 Гц или 2 в 16-й степени...", пока это один из стандартов и его еще никто не отменял. А пока, будем считать, что "первый блин комом". И после этого "блина" хочется задать вопрос: "Что курит «G~Lí†ch» и где достать эту чудо-траву"? Без обид.

  6. #706
    YAMAHA User

    DM, не , ну 48К было бы интереснее всё же ) хотя бы потому что больинство ЗК уже точатся под 48К и кратные этой частоте частоты )

  7. #707
    DM

    YAMAHA User писал:
    хотя бы потому что больинство ...

    А если большинство начнет прыгать вниз головой с многоэтажных высоток, вы тоже последуете их примеру? Думать собственной головой не пробовали?

  8. #708
    VEG Автор

    DM, звуковое оборудование действительно часто работает лучше (выдаёт более чистый звук) на 48kHz и на кратных, нежели на 44.1kHz. Я лично пользуюсь акустикой Edifier R2800, цифровой усилок которых заточен под 48kHz, и если на оптический вход подавать 44.1kHz, то появляется небольшой фоновой шум из-за плохой передискретизации. Проблему 100% решает ресемплер в плеере, который качественно и на лету перегоняет весь материал из 44.1 в 48, ну и системный микшер соответственно настроен работать на 48kHz тоже.

  9. #709
    Wlad

    Если проект будет идти к тому, чтобы эмулировать звучание конкретных "железных" синтов

    «G~Lí†ch», не выйдет, т.к. для этого нужны дампы самих "железных" синтезаторов, только так можно добиться звучания конкретных "железных" синтов, как в случае "полужелезного" YMF-724. Я когда то видел где то на каком то сайте, кто то продавал дампы многих "железных" синтезаторов, включая YAMAHA, и вроде YAMAHA MU и т.п., но к сожалению на данный момент найти мне его не удалось.

    Однако, нужны банки всех когда-либо существовавших железных синтезаторов, и ещё оптимизировать "повторяющиеся" бит-в-бит сэмплы, настройки (старт/цикл-регионы, корневые ноты)...

    Если такие банки и были бы, то в их таблицах уже были бы прописаны все старт/цикл-регионы, и корневые ноты, а также регионы расположения на клавиатуре, возможно пришлось бы только некоторые семплы конвертировать из одного формат в другой, что бы их понимал софтдвижок, т.к. у "железных" встречаемых не многих мной синтов, семплы в банке смешаны в разном формате, многие из них мне не известны.

    Если в ямахе "намертво" зашиты аудио данные в 22k05Hz, то какой смысл сохранять те же сэмплы в два раза "тяжелее", если качество уже было потеряно?

    Хороший вопрос ! Смысл однако есть. Во первых конвертация в 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, пиши больше на эту тему, эта информация лишней здесь точно не будет, а как раз наоборот :). Любой интересующийся этим синтезатором, возможно даже новичок, из таких постов узнает что то новое, а также поможет и освежить память.

  10. #710
    DM

    VEG, у меня есть одно правило в жизни, которого я стараюсь придерживаться. Я никогда не спорю с людьми, которых я уважаю (особенно на публике). А вас я не просто уважаю, а очень сильно уважаю. А после того, как почитал ваши статьи на хабре и в контакте - вообще стал вашим фанатом)). Поэтому, если вы даже скажете, что земля плоская и держится на трех китах. Я готов с этим согласиться)). Большинство споров не стоят того, чтобы настраивать против себя людей, которых ты уважаешь или которые вызывают у тебя симпатию. Если вас действительно интересуют мои аргументы по поводу 48 и 44.1 Кгц, я могу написать вам на почту и мы, что называется, в спокойной обстановке, можем обменяться своими мнениями на этот счет)). А, вообще, VEG, на будущее: по вопросам Yamaha S-YXG50, никого не слушайте кроме меня, а то они вам тут насоветуют)). Даже Wlad иногда заблуждается в некоторых вопросах, что уж про других говорить. Это я к тому, что вы же не музыкант и во многих "фишках", что называется, "не в теме".

  11. #711
    YAMAHA User

    Wlad, как идёт процесс нормализации лупов ? Использовали секвенсор которй приложил или всё таки это никуда ? Хочется получить вылизанный базовый банк , но я не умею.

  12. #712
    Wlad

    VEG, на будущее: по вопросам Yamaha S-YXG50, никого не слушайте кроме меня, а то они вам тут насоветуют)).

    DM, Ответьте тогда на такой простой вопрос, почему Yamaha S-YXG50 становится по звуку по сути "инвалидом", если снять галочки Reverb, Chorus, а также Variation в настройках синтезатора, а также попробуйте поставить эти галочки в разных вариантах, и послушайте одну и туже композицию желательно в формате XG где используются все эффекты . Если вы так хорошо знаете этот синтезатор, то думаю для вас не составит труда объяснить почему именно так ведёт себя звук. (Вопрос только к DM)

  13. #713
    DM

    DM, Ответьте тогда на такой простой вопрос, почему Yamaha S-YXG50 становится по звуку по сути "инвалидом", если снять галочки Reverb, Chorus, а также Variation в настройках синтезатора...

    Wlad, по той же самой причине, по которой некоторые женщины становятся "Бабой-Ягой" если с них смыть косметику)). Я ответил на ваш вопрос? И потом, Wlad, моя фраза: "а то они вам тут насоветуют))", к вам почти не относится. Я же написал, что даже Wlad иногда в некоторых вопросах заблуждается. Хотите поговорить об этом? Если вы считаете, что я вас этим обидел, то извините - не хотел. Если уж на то пошло, то наверняка найдутся какие-нибудь вопросы где может и VEG заблуждаться и я. Просто, я в свое время очень активно занимался программированием синтезаторов на C/C++. Поэтому, и позволил себе несколько нескромное заявление. Вот с кем бы мне точно не хотелось бы портить отношения в этой ветке блога - так это с вами и с VEGом.

  14. #714
    Wlad

    DM, вы меня не обидели. Похоже в синтезаторе так ни кто и не заметил, что эффекты в его настройках отключаются не корректно. Дело в том что эффект микшируется с оригинальным сигналом, чем выше громкость эффекта, тем ниже получается громкость оригинального сигнала, но если любой эффект в настройках синтезатора отключить, то вместо байпаса на отключенный эффект, мы получаем разорванную линию этого эффекта, и т.к. эффект теперь разорван, оригинальный сигнал всё равно продолжает убавлять свою громкость, в зависимости от громкости эффекта, и вся музыка связанная с эффектами звучит не корректно, попробуйте, снимите галочки с эффектов, воспроизведите какой нибудь XG MIDI файл, и я думаю многие удивятся, что вместо полного отключения эффектов, на выходе появился "покалеченный звук".

  15. #715
    DM

    Wlad, теперь понятно почему вы мне задали такой вопрос. Нужно было так прямо и написать, что есть вот такая проблема. Есть какие-нибудь мысли на этот счет? А то стороны это выглядело как - если вы такой "крутой", то подтвердите свою "крутизну" ответом на элементарый вопрос. И я подумал, что Wlad обиделся)).

    Wlad, а вы какими программами пользуетесь , когда "реверсите" Yamaha S-YXG50? Ну в смысле IDA, Ollydbg и т.п... какими конкретно?

  16. #716
    Wlad

    DM, пользуюсь Ollybdg 2.01, PE Explorer 1,99 для просмотра и анализа кода, и IDA pro изучаю.

  17. #717
    DM

    Wlad, а когда вы обнаружили проблемы связанные с байпасом на отключенный эффект? Связано ли это с какими-то вашими правками в коде или это баг Ямахи? Вы сами-то как думаете? Есть какая-нибудь своя версия или предположение?

  18. #718
    Alexys

    Когда мы это обнаружили - не важно. Обнаружили при исследовании.
    Собсно, то, что обнаружили не есть ошибка кода или обработки движком. Это просто "так сделано". Т.е. говоря аппаратным языком, это такой роутинг, распределение сигнала в схеме. Если движок полностью эмулирует физическое устройство, то тогда это была такая настройка устройства. Поскольку мы еще не знаем, какая именно схема распределения сигнала применена в двиге, то говорить точно нельзя. Но одно известно точно, что сигнал с инструмента идет через регулятор уровня напрямую, а не в дополнительный канал, как обычно.
    Насколько известно, во всех современных микшерных устройствах, т.е. конкретно, в блоках сумматоров, используется так называемая "отправка", "Send", т.е. сигнал проходит напрямую в сумматор и при этом имеет еще один или несколько отводов, для подключения каких-либо устройств: эффектов, мониторов, анализаторов. Это удобно, так как не нужно разрывать основную линию сигнала, а всего-лишь подмешивать к основному сигнал эффекта. И таких отводов можно сделать множество, ограничение лишь только в нагрузочной способности выходного каскада усилителя. Но есть другой способ - подключить все отводы на один регулятор, а сам регулятор сделать балансным между основным сигналом и сигналом эффекта - регулятор Dry-Wet. При унифицировании аппаратуы, т.е. деления на модули, удобно такой регулятор установить на блоке эффекта, а не в микшере. Тогда это сильно упростит общую схему сумматора, что снизит шум и повысит помехоустойчивость. Это касаемо аналоговой аппаратуры.
    В цифровой же "аппаратуре" не известно, "идет" ли там сигнал вообще, а если идет, то как. По идее, не имея физических ограничений, отправок можно сделать хоть миллион. И это было бы самым лучшим решением. Можно было бы повесить на контроллеры эти отправки и все. Хотя, может оно так и есть, просто с отключением Rever, Chor, Var, общая громкость снижается и инструменты мало того, что звучат голыми, так еще и довольно тихо.
    Обнаружение этого явления НЕ связано с правками в коде, поскольку правок кода движка (кроме счетчика битности данных) еще не производилось.

  19. #719
    Wlad

    DM, обнаружил давно, но на тот момент я не занимался изучением этого синтезатора, и поэтому со временем забыл про этот глюк. Проблема появилась когда мы настраивали Standart kit, т.е. каждый барабан по громкости, я Reverb обычно при помощи контроллера выставляю в 0, а в этот раз решил при помощи галочки это сделать, и всё настройки которые были сделаны при снятой галочки, оказались неверными по громкости, т.к. каждый барабан имеет свой уровень эффекта (Reverb,Chorus,Variation).
    Если убрать галочку к примеру с Reverb, и этот эффект выставить в 0, то громкость инструмента не нарушится, но если начать прибавлять Reverb, то громкость инструмента начинает падать до значения 86, а с 87 по 90 громкость инструмента равна нулю, т.е. его вообще не слышно, и с 91 по 127 громкость опять прибавляется, только 127 это уже не максимальная громкость инструмента, а ~=100. С Chorus другая картина, при его отключении, чем выше значение эффекта, тем ещё выше громкость инструмента, т.е. к данной громкости прибавляется ещё громкость инструмента. Variation ведёт себя так же как и Chorus. Также при снятой галочке Reverb, нарушается панорама (работает не корректно), и возможно мн. др.

  20. #720
    Wlad

    Связано ли это с какими-то вашими правками в коде или это баг Ямахи?

    Мои правки в коде ничего общего с этим не имеют, это так сделала YAMAHA, правда не понятно зачем.

    Вы сами-то как думаете?

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

    Есть какая-нибудь своя версия или предположение?

    Если честно, то пока нет, мне невдомёк, зачем выводить такие настройки, которые калечат синтезатор в целом.

  21. #721
    VEG Автор

    Скорее всего, просто ошибочный код. Частота дискретизации 96kHz тоже заявлена как поддерживаемая, но как минимум эффект variation работает на ней неправильно. Это же первая версия VSTi, и Yamaha её ни разу не обновляла (или по крайней мере мне ничего не известно про обновления). Так что ошибки не исправлялись. Стоит проверить как на WDM или VxD версиях синтезатора — возможно, там нет этой ошибки. По крайней мере, судя по примеру что предоставил YAMAHA User, в WDM версии звук от variation другой, и на приведённом им MIDI на WDM-версии оно звучит более корректно. Хотя, конечно, возможно MIDI был заточен под WDM-версию, в которой на самом деле было неправильно :)

  22. #722
    Wlad

    VEG, тут такой к вам вопрос, вам известно где в коде находятся эти переключатели ? (Revrb,Chorus,Variation), в прошлом вы работали с кнопкой HELP, и я предположил что возможно вы и эту информацию задокументировали.

  23. #723
    VEG Автор

    0x10031510 — инициализация окна настроек.
    0x10030AF0 — работа с контролами (0x10030CE5 — полифония; 0x10030CF8 — Reverb; 0x10030D04 — Chorus; 0x10030D11 — Variation).
    0x10031200 — устанавливает начальные состояния контролов.
    0x10030F10 — обработчик слайдера полифонии.
    0x10030770 — сохранение настроек при закрытии диалога (0x10030867 — полифония; 0x1003087E и ниже три одинаковых блока — полагаю, что Reverb, Chorus и Variation).

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

    Было бы любопытно выяснить назначение остальных 17 флагов, что позволяет переключать эта функция. Похоже, что движок синтезатора дёргает эту функцию через косвенные вызовы, поэтому выискивать все такие случаи нужно через отладчик — по перекрёстным ссылкам не видно.

  24. #724
    Wlad

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

  25. #725
    Wlad

    Установил сегодня виртуальную машину 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 файлов, а также покрутил его дополнительные эффекты, и никаких глюков при этом не обнаружил.

  26. #726
    DM

    Я тоже поэксперементировал с VSTi версией Ямахи. Причем, для чистоты эксперимента взял версию с минимальным вмешательством, которая с установщиком. Работает точно так же, как у Wlada - т.е. некорректно. Честно говоря, очень удивлен - его, что студенты программировали нанятые Ямахой, причем не самые лучшие)). С WDM версией поэксперементировть не удалось, потому, что скачал ее по ссылке VEGa c сайта Microsoft, а она оказалась без интерфейса. Удалил, попытался поставить другую, а система не разрешила - сазала, что у вас имеются какие-то не удаленные данные... Плюнул, не стал разбираться, но думаю, что результат будет как у Wlada.

    Возникает вопрос: что делать в такой ситуации? Поменять "движок" на WDM-кий? Подозреваю, что это будет слишком сложно. Отключить выключатели эффектов? Для меня, например, - это была очень полезная функция, но можно, конечно, привыкнуть и обходиться без нее. В общем, тут, наверное, нужно спросить у главного реверсера этого блога: как лучше поступить в такой ситуации?

  27. #727
    Alexys

    DM
    Способ тут один - исследовать механизм и понять, как он работает. Хотите помочь - помогите ! Можете связаться с Владом или со мной.
    Поскольку Вы сейчас наступили на грабли, то остается только посмеяться над тем, какая у Вас большая шишка ! (это шутка).
    А вообще, если Вы действительно знаете C++, то это очень хорошо (намекаю на постановку задач).

  28. #728
    Wlad

    Возникает вопрос: что делать в такой ситуации?

    Всё верно, нужно исследовать механизм и понять как он работает, а также сравнить код у VSTi и WDM этих функций, если повезёт и код будет сильно схож, то это облегчит задачу, к тому же VEG поделился всей необходимой информацией которая касается VSTi, что уже в разы упрощает задачу, осталось только разыскать эти функции в WDM, и разобраться как в нём реализовано отключение эффектов по сравнению с VSTi. В ближайшее время планирую этим заняться.

    Отключить выключатели эффектов?

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

  29. #729
    DM

    Поскольку Вы сейчас наступили на грабли, то остается только посмеяться над тем, какая у Вас большая шишка ! (это шутка).

    Alexys, да не говорите. Сижу тут да плачу от боли и смеюсь над вашей шуткой)). В общем, и на старуху бывает порнуха)). Если бы Wlad не написал об этой проблеме - мне бы наверное и сейчас было ни к чему. Мы чаще всего прослушиваем миди-файлы и стили не свои, а чужие. А там пойди разберись какой канал отключился, а какой нет. На фоне всей музыки - это чаще всего не всегда очевидно.

    Что касается всего остального, то тут нужно, наверное, немного пообщаться, хотя бы в этой ветке блога, выяснить потихоньку кто чего хочет от Yamaha S-YXG50, а там видно будет. Одно я знаю точно - если VEG вас (ну или нас) не будет опекать: подсказками, советами, небольшими консультациями - эта задумка, скорее всего, будет иметь длительное решение и может даже закончиться с нулевым результатом.

  30. #730
    Alexys

    DM
    Самое интересное, что сама мидишка то никак не управляет включением или отключением эффекта, т.е. эти настройки просто, как говорится, панты дешевые, пустышка. Видимо пришла разрабам мысля, уже опосля - "а не сделать ли нам отключение эффектов ? А зачем ? А просто так !" Никто не обратил внимание, что при таком "отключении" происходит разваливание половины устройства с потерей нормального управления.

    Мы чаще всего прослушиваем миди-файлы и стили не свои, а чужие.

    А причем здесь свои или чужие миди-файлы ? Управления то все равно нет ни в тех, ни в этих.

    А там пойди разберись какой канал отключился, а какой нет. На фоне всей музыки - это чаще всего не всегда очевидно.

    Каналы по отдельности тут ни при чем, настройка то работает на все устройство сразу. Но заметно будет сразу.

    Что касается всего остального, то тут нужно, наверное, немного пообщаться, хотя бы в этой ветке блога, выяснить потихоньку кто чего хочет от Yamaha S-YXG50, а там видно будет.

    Такое ощущение, что хозяин здесь не VEG, а Вы. Перестаньте уже "подавать с барского плеча". Мы все тут гости - так и вести себя. Как будто мы тут только-только все собрались и решаем, что делать и как быть. Мы уж полгода как трем эту тему. Какая разница, кто чего хочет от Ямахи ? Другой вопрос - кто что может делать !
    VEG нас опекать не будет, у него своих дел много ! Также как и у нас. Если Вы так говорите, то значит не внимательно читали блог. В самом начале же ясно и четко написано, что синтезатор Ямаха адаптирован для прослушивания в плеере Фубар. Больше VEG ничего делать не был намерен. DMскачивайте программу и продолжим ругаться там, а не здесь ! :)

  31. #731
    YAMAHA User

    VEG, по поводу того MIDI файла , обратитесь на MIDI.ru к музыканам с PSR , ну или я могу попоросить одну девушку на её ямахе восспроизести и записать результат в файл. Но второе чуть проблемнее будет чем выложить файлик на midi.ru и получить WAV-ку от музыканта действующего )

  32. #732
    VEG Автор

    YAMAHA User, тут чтобы понять как оно должно быть лучше сравнивать с железными синтезаторами того же поколения. То есть, например, с MU50. Wlad вот считает, что VSTi ведёт себя более корректно:

    Что касается эффекта Variation, то да, он на обоих WDM действительно хуже реализован чем на VSTi, если взять к примеру эффект Delay LR и установить его громкость в 127, то у WDM концы эффекта просто грубо отсекаются, причём довольно рано, и это отчётливо слышно даже на малой громкости, а вот в VSTi, продолжают плавно затухать до самого конца (до 0).

    Возможно, ваш 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-битного кода (тут видимо придётся использовать методики что используют виртуальные машины).

  33. #735
    YAMAHA User

    VEG

    Можно попробовать, конечно, переделать какой-нибудь один файл WDM-драйвера, разобраться как он работает, убрать всю обвязку, что работает с WDM, и заменить на своё API, не завязанное на API драйверов. Но это тоже огромный объём работ, и для каждого WDM-драйвера это нужно повторять независимо. Плюс для VxD-драйверов такой подход не подойдёт — там 16-битный код есть, и без виртуализации или эмуляции тут уже никак.

    ОЧЕНЬ жилательно ) если можете - сделайте )

    Я тут подумал ещё насчёт эффектов и снятия галочек... а ведь можно пойти иным путём.
    Можно переработать двиг так , чтоб снятие галочек НЕ ОТКЛЮЧАЛО эффект , а задавало значение эффекту равное 0 и уже иные значения отличные от 0 не восспринимало.

  34. #736
    VEG Автор

    YAMAHA User,

    ОЧЕНЬ жилательно ) если можете - сделайте )

    Любой может. Вопрос только во времени. Если бы я бы был бессметрным, то я бы с удовольствием потратил на такой проект годик жизни (просто потому что это интересный вызов). Особенно интересно было бы разобраться с запуском 16-битного кода VxD-драйверов в чём-то вроде виртуальной машины. Но так как время всё же ограничено, приходится выбирать. Увы, но я не такой большой фанат этих синтезаторов, это очевидно хотя бы из того, что я с 2002 по 2016 год про MIDI почти не вспоминал. Просто нашёл старые MIDI, что слушал на Yamaha YMF7x4 в начале 2000-х, нагуглил S-YXG50, послушал — по воспоминаниям звучит аналогично, но установка была очень неудобной, поэтому и сделал этот патч.

    Скрипт разборки и сборки tbl-файлов хочу сделать так как на его разработку вместе с информацией от Wlad мне нужно реально 2-3 полных дня работы, то есть относительно немного времени, зато «разобранный» файл, который будет собираться обратно в банк, послужит лучшей и наглядной документацией о внутреннем устройстве tbl-файлов. Но сейчас это в заморозке, и я застрял с другим проектом.

    Wlad,

    Всё верно, нужно исследовать механизм и понять как он работает, а также сравнить код у VSTi и WDM этих функций, если повезёт и код будет сильно схож, то это облегчит задачу

    Увы, код там разный. Я до самого движка не добрался, возможно он и похож, но обвязка — очень разная. Внутри WDM-драйверов ковырялся когда занимался расшифровкой третьего самого маленького tbl-файла, который есть только в WDM-драйверах и, как оказалось, представляет собой лишь двоичный конфигурационный файл, настраивающий поведение драйвера.

    к тому же VEG поделился всей необходимой информацией которая касается VSTi, что уже в разы упрощает задачу, осталось только разыскать эти функции в WDM, и разобраться как в нём реализовано отключение эффектов по сравнению с VSTi.

    Увы, но я поделился только информацией где находится работа с этими настройками в обвязке. Передачу этих параметров в движок ещё предстоит отследить (и я полагаю, что нужно начать с изучения функции 0x10030890 что применяет эти и другие флаги), и соответствующий код движка ещё предстоит найти и изучить. Я не углублялся, но полагаю, что моя информация сэкономила вам лишь пару часов.

  35. #737
    YAMAHA User

    VEG,
    Я вот например не понимаю , а зачем именно ОТКЛЮЧАТЬ эффекты ? Ведь можно же сделать вот что :
    1) когда мы снимаем галки (впрочем из можно переименовать в Force value 0) принудительно задавать эффекту значение 0
    2) не реагировать больше ни на какие другие значения в секвенсоре отличные от 0
    Если результат значения 0 будет полный Bypass , зачем городить полное отключене ?

  36. #738
    VEG Автор

    YAMAHA User, чем то что вы написали отличается от отключения эффекта? Так оно примерно и должно работать, но в S-YXG50 где-то закралась ошибка. И проблема тут не в том, чтобы придумать, как оно должно работать, а в том, чтобы додуматься, как именно это сделать. Для этого нужно будет хорошо разобраться в этой части кода синтезатора. Это не занятие на вечер за чашечкой чая. Это гораздо более объёмная и сложная задача. Капитан очевидность тут не помощник, здесь только реверс-инжиниринг соответствующего кода движка может помочь.

  37. #739
    YAMAHA User

    VEG, вышк же с Wlad-ом это обсуждали и пришли к выводу что отключение эффекта и установка значения 0 устроены по-разному. И я понимаю что существует всего два варианта и оба с реверсом...
    1) отреверсить эту часть кода на каждый эффект и написать именно отключение эффекта
    2) отреверсить эту часть кода на каждый эффект , НЕ ОТКЛЮЧАЯ маршрутизацию прохода сигнала через все эффекты , но зафиксировать при снятии галочки установление значения 0.
    Я думаю , что второе проще , потому что идти через отключение всех эффектов это перерабатывать весь конвеер , а озафиксировать значение 0 - это всё таки весь конвеер перерабатывать не надо.

  38. #740
    Wlad

    VEG, да действительно, код у WDM по сравнению с VSTi разный, но похожие подпрограммы всё же встречаются, например чтение таблиц барабанов (случайно наткнулся), и самое интересное то, что в WDM движке очень много кода написано при помощи инструкций MMX по сравнению с VSTi. Заметил также что в VSTi встречается ещё и код SSE, и это наводит на мысль, не тот ли этот самый третий метод обработки (например чтения семплов), который выбирается в зависимости от поддержки процессором инструкций, время покажет.

    Поменять "движок" на WDM-кий? Подозреваю, что это будет слишком сложно.

    Не вижу смысла адаптировать WDM движок в качестве VSTi, т.к. этот образец не блещет качеством, мало того что он шумный, да ещё и эффекты работают некорректно* (видимо из за экономии ресурсов ПК), да и выбор очевиден, между лучшим качеством звука в VSTi и отсутствием отключением эффектов, что не критично, или убить неоправданно уйму времени на то, что бы получить не качественный звук (движок), но за то с отключаемыми эффектами.

    к тому же VEG поделился всей необходимой информацией которая касается VSTi, что уже в разы упрощает задачу

    Тут я не совсем правильно написал (видимо о чём то задумался :)), я хотел написать, что VEG поделился всей необходимой информацией которая касается окна с настройками в VSTi.

  39. #741
    Wlad

    Хоть код у 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мб :

     SUB_L00015960:
      		push	SSZ00041B48_waveset
      		call	SUB_L0001544A
      		cmp	eax,00000001h
      		mov	eax,SSZ00057228_sxgbin41_tbl
      		jz 	L00015979
      		mov	eax,SSZ00057218_sxgbin21_tbl
     L00015979:
      		retn
    

    15ACEh - читается sxgmasys.tbl

  40. #742
    YAMAHA User

    Обновил пачку синтов : https://yadi.sk/d/EQ4zU2M53JXprQ
    Отличий не много , YMF-724 которая здесь была последняя новая (правда до правки банка) и MUNT VSTi самая последняя версия )
    Кстати , коргда собираетесь банк допилить который от исходной ямахи ? Я вроде приложил сюда музыку на которой можно при желании повышением питча и понижением питча выловить битые ноты.

    Я писал где это сделать и инстурмент дал вот здесь http://veg.by/ru/projects/syxg50/comment-page-14/#comment-50946

  41. #743
    Alexys

    YAMAHA User
    Что значит "когда собираетесь" ?? Наглеете, братец ! Даже и не думали следовать Вашим "советам".
    Еще раз объясняю: с банком все в порядке. Единственная коррекция, которая была (и могла быть вообще) произведена - это увеличение битности, т.е. из 8 в 16 бит. Самым главным было найти метод интерполирования, который используется в "движке" Ямахи. ВСЁ !
    Искать ошибки надо только в инструментах, в их настройках.
    Поскольку было решено произвести замену исходных сэмплов, то заниматься коррекцией старого банка сейчас не имеет смысла. Рано или поздно мы дойдем до каких-то ошибок в инструментах и, собрав нужную информацию, исправим их. То же распространится и на синт со старым банком.
    Заметьте, никто, кроме Вас, не жалуется на "некорректность" звучания синта. Странно, да ? За то время, пока Вы здесь отсутствовали могли бы и найти своим способом те ошибки, о которых Вы постоянно упоминаете.
    В общем, пост 661 будет пока единственным ответом на Ваш вопрос. (Хотя, если конкретней распишете, что за проблему Вы видите, то, может быть и решение найдется быстрее.)

  42. #744
    Wlad

    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:

    Male Aah Choir XXL (Male Aah HS2)
    01 - R=B2   C0-C3
    02 - R=Db3  Db3-D3
    03 - R=Eb3  Eb3-E3
    04 - R=F3   F3-F3
    05 - R=F#3  F#3-G3
    06 - R=G#3  G#3-A3
    07 - R=Bb3  Bb3-B3
    08 - R=C4   C4-C4
    09 - R=Db4  Db4-D4
    10 - R=Eb4  Eb4-E4
    11 - R=F4   F4-F4
    12 - R=F#4  F#4-G4
    13 - R=G#4  G#4-A4
    14 - R=Bb4  Bb4-B4
    15 - R=C5   C5-C5
    16 - R=Db5  Db5-D5
    17 - R=Eb5  Eb5-E5
    18 - R=F5   F5-F5
    19 - R=F#5  F#5-G5
    20 - R=G#5  G#5-A5
    21 - R=Bb5  Bb5-B5
    22 - R=C6   C6-C10
    

    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

  43. #745
    YAMAHA User

    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.

  44. #746
    VEG Автор

    YAMAHA User,

    Но банк у вас такой , что его редактировать нормальным не бинарным методом никак , потому и предлагаю сделать SF2 или DLS.

    Вам вроде как объяснили, что это непросто сделать. Если вы хотите сконвертировать банк в SF2 — сами возьмите, разберитесь и сконвертируйте. Если не получится, то хотя бы поймёте, почему ваш совет совершенно бесполезен. Если бы это было просто и не требовало массу времени — то уже давно кто-нибудь сделал бы.

    Плюс нужно понимать, что без потерь перенести информацию из таблиц Yamaha S-YXG50 может и не получится. Вполне возможно, что там используются какие-то параметры, аналогов которых нет в DLS или SF2.

  45. #747
    YAMAHA User

    VEG
    Сам банек SF2 у меня есть ) вот и хотелось бы чтоб синтезатор умел читать этот формат ) , вопрос лишь в том что будет ли это ? Да и в плане расширяемости SF2/DLS удобнее чем SMP / TBL. Но автору виднее.

    Да и сделать обработку SF2/DLS можно по-разному... не обязательно делать полную зависимость от этих форматов и переносить туда всё с мясом. Достаточно просто структуру банка перенести MSB от 000 до 127 / LSB от 000 до 127 и номера пэтчей от 000 до 127 )

  46. #748
    VEG Автор

    YAMAHA User, добавить поддержку SF2/DLS в S-YXG50 будет ещё сложнее, наверное на порядок как минимум. Исходных кодов у этого синтезатора нет, что сильно сужает возможности по его доработке. Впрочем, оно всё равно возможно, и если вы хотите потратить на это несколько лет — я бы с удовольствием пронаблюдал таким проектом, если бы вы им занялись.

  47. #749
    Wlad

    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.

    127x64x63=512064 прослушиваний этой композиции... надоест , я понимаю.

    YAMAHA User, Вы наверное издеваетесь )))), вы хотите что бы я прослушал пол миллиона раз ваш MIDI файл, который склеен из нескольких треков в общей сумме времени в ~15мин. Вы если обнаружили ошибку луп региона, выясните какой инструмент, ведь это просто, либо на слух, ведь слышно например рояль если нарушен, или посмотрите на дорожках, ведь больше 16-ти инструментов в треке не будет, пролистайте эти инструменты в том же кейкволке на клавиатуре мышкой, и если найдёте ошибку то сообщите мне, и я её незамедлительно исправлю и обновлю синт, ведь это вам нужно, но ни как не мне, у меня другая задача, это сделать новый синтезатор, а также может ещё что нибудь интересное подвернётся, дампы YAMAHA например, которые можно адаптировать к этому движку, что бы получить что то новое, и т.п.

  48. #750
    YAMAHA User

    Wlad
    Мы говорим совсем о разном )
    Я имел ввиду , что в SF2 перевести исключительно сэмплы , а в двржке указать что читать инструменты из SF2 вклбчая такие вещи как Layers , Samples , Loops Regions и всё. Все остальные настройки типа настройка хоруса , ревера , velocity и прочего из SF2 можно напрочь игнорировать совсем... зачем нужен такой формат как SF2 / DLS ямахе ? Всё просто , для удобства доведения банка до ума , для удобства добавления инструментов и редактирования их ) грубо говоря SF2 для ямахи это тот же SMP только не склеенный одним непрерывным куском где можете вычислять инструменты , луп-регионы и прочее только вы и VEG , а нормальный , систиматизированный банк. Вот и всё что нужно для удобства ямахе на мой взгляд )
    Сам же движёк синтезатора должен полностью оставатсья в ямахе и не должен использовать SF2 или подобную библиотеку иначе , как просто таблицу инструментов ) если это сделаете - вам же удобнее будет всё редактировать ) , добавлять изменять и прочее )

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