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. #601
    YAMAHA User

    Wlad
    Тут такая мысль появилась по SoundCanvas VA )
    Если сейчас его открыть, то у нас есть такие опции как Buy и Activation.
    Коль защита разломана совсем , может ввыпилите эти два пунткта? Ну а правда, что активировать если оно уже активировано? Ну и что покупать если всё равно активационный ключ не применить ввиду того что продукт уже активирован? Я считаю наличие этих двух пунктов по нажатию на Options уже лишено всякого смысла )

  2. #602
    Alexys

    Я считаю наличие этих двух пунктов по нажатию на Options уже лишено всякого смысла )

    Вот и займитесь !! Будет польза.

  3. #603
    YAMAHA User

    Alexys
    К большомусожалению я :
    1) не программист
    2) не знаю в чём редактировать так глубоко

  4. #604
    Wlad

    как я понял , синтезатор достаёт ВЧ даже из 22050 ) просто надо стараться вычистить по лучше от паразитного шума

    YAMAHA User, не всё так просто, изучив несколько дампов железных синтезаторов, в них отчётливо видно, что в них семплы смешаны в разном качестве, а также в разном типе данных самого формата семпла (многие мне не известны), попадаются в 44100 16-бит, 22050 16-бит, и т.д., т.е. оптимизированы под качество железного аппарата. Что касается семплов программного "аналога", то 22050 8-бит это очень плохо, т.к. в начале семплы синтом подрезаются немного фильтром (Cutoff) что бы удалить с них шум, и добавляют яркости при помощи резонатора, т.е. вы я думаю теперь понимаете за счёт чего убирается шум и достигается яркость из плохих и шумных семплов 8-бит. Сейчас мы с Alexysем начали заменять полностью Standart kit, заменяем именно на 44100 16-бит, и по счастливой случайности в дампе NEC XR385 в самом начале оказался семпл Surdo 44100 16-бит, я вам хочу выложить в архиве два семпла Surdo, старый и новый (они отличаются немного по тону), в старом хорошо слышен шум и его частотный диапазон равен 11025гц, т.к. семпл 22050, а новый семпл по частотному диапазону имеет размах во все 22050Гц, вот вам и эксперимент, сможете ли вы добиться убрав шум, хотя бы приближённого звучания в качестве двух этих семплов. Также на примере "нового" Surdo, если тон оригинала понизить на несколько тонов в низ, то те частоты которые человеческим ухом едва улавливаются, при понижении тона становятся слышимыми, и от этого как уже показала практика, сохраняется довольно неплохое качество звука, а в случае 22050, все верха обрезаны, так что даже если вы и добьетесь хорошего результата от удаления шумов, всё равно качество синтезатора сильно заметно лучше не станет, скорее станут заметны нарушения луп регионов, и если всё же решите поэкспериментировать с Surdo и вам покажется что вы добились хорошего результата, то попробуйте эти два семпла снизить хотя бы на пол октавы (-6), и сравните результат. Если семпл повышать в ч.д., то тогда да, высокие получаются, но,, опять же получаются сильнейшие искажение звука из за шума 8-бит, и поэтому YAMAHA фильтрует их фильтром ещё силней, а также использует уже отфильтрованные семплы в банке, и самое главное, используются уже сниженные на пол октавы и октаву семплы, что бы уже в синтезаторе указать этим семплам высокую ноту, и этим методом вроде как шума и искажений становится меньше, но они всё равно фильтруются. Я уже всё YAMAHA User перепробовал, также хотел улучшить качество, но кроме как повышение в двое ч.д. и разрядности, больше ничего не помогло, поможет только полная замена семплов на качественные, в данном случае оптимальным вариантом для движка является 44100 16-бит, только таким образом можно добиться отличного результата, к тому же этот фирменный синтезаторный движок, обладает очень широкими возможностями.

    Коль защита разломана совсем , может ввыпилите эти два пунткта? Ну а правда, что активировать если оно уже активировано? Ну и что покупать если всё равно активационный ключ не применить ввиду того что продукт уже активирован? Я считаю наличие этих двух пунктов по нажатию на Options уже лишено всякого смысла )

    YAMAHA User, на счёт других вопросов не связанных с YAMAHAой, свяжитесь с нами в ooVoo, там всё обсудим, возможно поможем друг другу чем нибудь, кстати, это очень хорошо что вы всем этим интересуетесь :). YAMAHA User, вы конечно меня извините, но раз уже всё активировано, и ничего не требуется, то лазить в опции как в Buy, так и Activation, точно лишено всякого смысла, т.к. при нажатии Activation высвечивается подтверждающее окошко, которое свидетельствует о том что продукт активирован, а Buy может пригодится для того, что человек полностью протестировав этот продукт, решит его всё же честно приобрести (люди бывают разные), а убирать эти пункты с опций, нужно где то в коде, как вы я рискну предположить, убедились уже в этом сами, что этих пунктов в ресурсах нет.

    Так же хочу поделится информацией (таблицей), которая указывает какой код, какой ноте соответствует в синтезаторе YAMAHA.

                               +-----------------------------------+
                               |    C-Db-D-Eb-E-F-F#-G-G#-A-Bb-B   |
    +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
    |   0    |   1    |   2    |   3    |   4    |   5    |   6    |   7    |   8    |   9    |
    +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
    | 00-C0  | 0C-C1  | 18-C2  | 24-C3  | 30-C4  | 3C-C5  | 48-C6  | 54-C7  | 60-C8  | 6C-C9  |
    | 01-Db0 | 0D-Db1 | 19-Db2 | 25-Db3 | 31-Db4 | 3D-Db5 | 49-Db6 | 55-Db7 | 61-Db8 | 6D-Db9 |
    | 02-D0  | 0E-D1  | 1A-D2  | 26-D3  | 32-D4  | 3E-D5  | 4A-D6  | 56-D7  | 62-D8  | 6E-D9  |
    | 03-Eb0 | 0F-Eb1 | 1B-Eb2 | 27-Eb3 | 33-Eb4 | 3F-Eb5 | 4B-Eb6 | 57-Eb7 | 63-Eb8 | 6F-Eb9 |
    | 04-E0  | 10-E1  | 1C-E2  | 28-E3  | 34-E4  | 40-E5  | 4C-E6  | 58-E7  | 64-E8  | 70-E9  |
    | 05-F0  | 11-F1  | 1D-F2  | 29-F3  | 35-F4  | 41-F5  | 4D-F6  | 59-F7  | 65-F8  | 71-F9  |
    | 06-F#0 | 12-F#1 | 1E-F#2 | 2A-F#3 | 36-F#4 | 42-F#5 | 4E-F#6 | 5A-F#7 | 66-F#8 | 72-F#9 |
    | 07-G0  | 13-G1  | 1F-G2  | 2B-G3  | 37-G4  | 43-G5  | 4F-G6  | 5B-G7  | 67-G8  | 73-G9  |
    | 08-G#0 | 14-G#1 | 20-G#2 | 2C-G#3 | 38-G#4 | 44-G#5 | 50-G#6 | 5C-G#7 | 68-G#8 | 74-G#9 |
    | 09-A0  | 15-A1  | 21-A2  | 2D-A3  | 39-A4  | 45-A5  | 51-A6  | 5D-A7  | 69-A8  | 75-A9  |
    | 0A-Bb0 | 16-Bb1 | 22-Bb2 | 2E-Bb3 | 3A-Bb4 | 46-Bb5 | 52-Bb6 | 5E-Bb7 | 6A-Bb8 | 76-Bb9 |
    | 0B-B0  | 17-B1  | 23-B2  | 2F-B3  | 3B-B4  | 47-B5  | 53-B6  | 5F-B7  | 6B-B8  | 77-B9  |
    +--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+
    

    Также хочу поделится некоторыми расчётами:

    C0  =  44100
    C1  =  66150
    C2  =  88200
    C3  = 110250
    C4  = 132300
    C5  = 154350
    C6  = 176400
    C7  = 198450
    C8  = 220500
    C9  = 242550
    C10 = 264600
    

    Если Root ноту C0, назначить на клавишу C0, и нажать клавишу C0, то семпл читается с ч.д. ровно 44100 !, а если нажимать клавиши далее вверх по нотам и так далее выше по октавам, то просто изменяется ч.д. семпла (его скорость чтения), смещение на одну октаву, смещает ч.д. ровно на 22050Гц, не зависимо, выше или ниже. Таблица выше показывает шаг (22050) ч.д. от C0, а таблица ниже, шаг ч.д. нот. (точность после запятой приблизительная)

    3C-C5     44100
    3B-B4     41344
    3A-Bb4    39966,1
    39-A4     38588,2
    38-G#4    37210,4
    37-G4     35831,8
    36-F#4    33075
    35-F4     30319,8
    34-E4     28940,4
    33-Eb4    27562,2
    32-D4     26184,1
    31-Db4    24806
    30-C4     22050
    
  5. #605
    YAMAHA User

    Wlad
    Ну да , судя по сэмплу всё же 44100 @ 16 лучше будет чем апсемпленый 22050 с любой разрядностью. Но тут главное всё же сохранить настоящий звук как был, чтоб не получилось что меняешь звук и выходит что всё неузнаваемо становится. Это я помню в своё время так реконструировал JNSGM.sf2 хотел чтоб он был не толкьо GM, но и GS и даже MT-32. Так вот приходилось столько подгонять Loop регионы когда смешивал родные JNS сэмплы с Creative 4 MB банком ) что просто ужас. Просто на добавление ушло где-то около полугода, а вам надо реконстрировать не 128 инструментов, а целых 480 или 676 вроде. Кстати вот никак не пойму из чегос кладываются эти цифры.... 480 это чего XG? А тогда 676 это чего? XG+GM? Но тогда 608, а говорят о 676... если XG+GS то тогда если даже спмый простой банк от Roland то 480+226? Тогда 706 ) в общем тут путаница какая-то.

  6. #606
    Wlad

    YAMAHA User, настоящий звук что бы как был, как я описал выше, можно было улучшить только при помощи поднятия в двое ч.д. и разрядности, и к сожалению и на этом всё, я это сделал. Данный проект синтезатора и будет другим, он и не должен и не будет звучать как родной банк, однако некоторые инструменты останутся один в один т.к. состоят из осцилляторов которые я потихоньку заменяю на 44100/16. Если вам нужен синт с родными семплами с более качественным банком он есть, а также я вам его выложил вместе с WAV файлом этого же качества для экспериментов. Если быть честным, родной звук YAMAHи уже сильно приелся, я бы даже не побоялся даже этого слова - надоел, звуча одними и теми же семплами во многих инструментах, что в GM,GS, и XG. Мы же хотим создать новый синт XG+, с истинным качеством, а не псевдо, в котором каждый инструмент будет иметь свои семплы, и делаться будет с упором на качество, для себя, и для людей, а не как этот синт, не побоюсь даже сказать "синт для нищих" в которм качество семплов ухудшили почти до предела (хорошо хоть в 11025 8бит не обрезали). В синтезаторе на данный момент может быть составлено 255 полноценных сырых (без обработки) инструментов которые состоят из набора семплов (на инструмент), все эти ячейки не заполнены, а также дублируются (если понадобится расширю и эту цифру), и к тому же начало этих ячеек заполнено GS набором барабанов, не понятно правда зачем (видимо что бы их чем то заполнить) , если для этого есть свой блок (барабанов), хотя они ещё и там дублируются, и на основе одних и тех же семплов и синтезируются новые инструменты в GM,GS, и XG. На счёт количества семплов, я их не считал, но что то не похоже, на вряд ли их там столько, т.к. у YAMAHи берётся один семпл, обрабатывается разными конфигами по разному, и получается два разных звука на основе одного семпла, скорее всего так и насчитываются эти цифры (учитывая не честность по отношению к 4мб банку, отрезания GS конфигов от синтезатора в VSTi и использования их от GM, и мн.др. фактам).

  7. #607
    YAMAHA User

    Wlad
    Дело в том , что в оригинальном банке вам пилить пилить и пилить ещё... когда вы увеличить дискретку в 2 раза , наришилась луп зона у многих инструментов , а вот сбалансировать лупзону чтоб она была как положено это мама не горюй. Я лично сам делал банк SoundCanvas 55 на основе DLS-а , так вот там при конвертации в SF2 нарушались Loop регионы и я на вылизывание этого потратил квартал времени. Пока вылизал каждую ноту в каждом инструменте. Так что на отладку вам ещё естьь чем заняться.
    Теперь что касается стандарта XG и вашего недопонимания раскладки барабанных в банке 127...
    Дело в том , что XG по стандарту имеет возможность назначения барабанов на ЛЮБОЙ канал, а не как сделано в SoundCanvas и совместимых модулях что ударным каналом может быть стандартный 10-ый и 11-ый... в ямахе по спецификации ударным каналомможет быть любой и мало того, сумма ударных каналов не 2 , а может достигать всех 16-и... то есть... вы можете иметь 16 набаров ударных и назначит на каждый канал по уникальному набору ударных. Вот поэтьому вы удивляетесь почему у ямахи ударники на ваш взгляд задублированы. А сделано это потому , что выбрать ударный комплект можно только в банке 127.

  8. #608
    Alexys

    Дело в том , что в оригинальном банке вам пилить пилить и пилить ещё...

    Ну, надо же, а мы не знали !!

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

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

    Теперь что касается стандарта XG и вашего недопонимания раскладки барабанных в банке 127...

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

    Дело в том , что XG по стандарту имеет возможность назначения барабанов на ЛЮБОЙ канал,

    Вот спасибо - мы не знали !!
    Хватит уже писать ерунды !!! Не забивайте блог бесполезным хламом.

  9. #609
    Wlad

    Дело в том , что в оригинальном банке вам пилить пилить и пилить ещё...

    YAMAHA User, пилить родной банк я не планирую, а на данный момент создаю новый, а вот вас могу научить как его допилить, и если вам это интересно, то в ooVoo удобнее всего это сделать, т.к. общаться там можно в реальном времени. YAMAHA User, а вы ничего не путаете, хоть ударные дорожки и ставятся на разные каналы, но в реале работают только две, а десятый канал всегда привязан к барабанной установке, попробуйте разные наборы поставить на разные дорожки, и вы увидите, что ударные перекрывают друг друга. YAMAHA User, я вообще то имел в виду дублированные семплы, которые используются в разных наборах, а также и инструментах, и имеют разные конфиги которые ссылаются на один и тот же семпл, но имеют разные настройки по тональности, и т.д. и т.п.. Все наборы ударных, так же как и инструменты в разных банках, дублируются согласно специальным таблицам (в инструментах согласно банку 0, а барабанам согласно Standart kit), и меняются только ключевые инструменты и барабаны на новые, это нужно для того, чтобы в других банках не было пустых инструментов (тишины), например в банке 03 (стерео) всего три новых инструмента, а остальные 124, дублируются с банка 00, чтобы на их месте не было тишины.

  10. #610
    Wlad

    Забыл сказать, что одна дорожка барабанов строго привязана к каналу 10, а другая дорожка барабанов может быть на любом другом канале, но одна из них должна быть обязательно на канале 10, только так получится выбрать два разных набора барабанов, если же выбрать два разных набора на любых других каналах игнорируя канал 10, то один набор будет отключать другой,

  11. #611
    Astemir

    Миди/MIDI — цифровой интерфейс музыкальных инструментов (Musical Instrument Digital Interface) -
    создан в 1982 году ведущими производителями электронных музыкальных инструментов — Yamaha, Roland, Korg, E-mu и др.
    Служит для передачи управляющего потока MIDI-сообщений между инструментами. Интерфейс — старт-стопный последовательный.
    Каждый инструмент имеет три соединительных разъема: In (вход), Out (выход) и Thru (сквозной выход - копия сигнала с In через буфер).
    MIDI- сообщения делятся на канальные — относящиеся к конкретному каналу, и системные — относящиеся к системе в целом.
    Кодировка MIDI-сообщений (шестнадцатеричная).

    На основе MIDI позднее был разработан стандарт GM (General MIDI - единый MIDI), устанавливающий условия обязательной совместимости инструментов и интерпретации номеров программ и контроллеров, а затем и другие стандарты (GS и XG), расширяющие GM.
    Но! общность инструментов внутри каждого стандарта подразумевает только основные звуковые характеристики.
    "Одинаковые" тембры на различных инструментах почти всегда имеют различную окраску, динамику, яркость, громкость по умолчанию и
    другие особенности, а "синтетические" тембры могут совершенно отличаться друг от друга.

    У разных инструментов различается зависимость характера звука от силы удара по клавише,
    динамика работы MIDI-контроллеров, положения контроллеров по умолчанию и прочие "тонкие" параметры.
    Поэтому MIDI, подготовленная для конкретного инструмента, на других инструментах (даже внутри одного стандарта) часто
    звучит совершенно по-другому, и это необходимо учитывать при переносе партитур между инструментами различных моделей.
    Подробнее здесь http://www.ixbt.com/multimedia/mididescrib.html

    Стандарты MIDI:
    GM - 1991г, GS (Roland) - 1991г, XG (Yamaha) - 1994г, GM2 - 1999г.
    При этом стандарт XG от Yamaha делится на три подстандарта: XG, XG Lite, XGlite Ver2.0
    Стандарты от меньшего к большему:
    GM > GM2
    GS
    XG Lite (1997г) > XGlite Ver2.0 (2001г) > XG (1994г)
    Как мы видим, сначала была выпущена самая полная версия стандарта XG, потом Yamaha ее упростила для поддержки другими, и после расширила.
    Roland поддерживает GM2/GS/XG Lite, т. е. Roland поддерживает самую лайтовую версию стандарта Yamaha.
    Korg выпускал инструменты с полным XG, это N-серия с поддержкой GM2/GS/XG.
    Первый продукт Yamaha на основе XG: тон генератор Yamaha MU80 в 1994г. В 1995г дочерняя карта для ПК DB50XG.
    В 1996 году Yamaha выпустила внешний модуль MU10 и SW60XG ISA PC card. Они имели звуковой банк с 4 МБ сэмплированных инструментов.
    Подробнее здесь http://www.ixbt.com/proaudio/midi-standards.shtml

    480 это XG? А 676 это XG+GM? Но тогда 608, а не 676...
    если XG+GS, то если самый простой банк от Roland 480+226, тогда 706?

    Не все так просто...
    676 - это всего, всех отличающихся на слух инструментов, т. к. одни и те же инструменты присутствуют в разных стандартах.
    Например, есть звук пианино GrandPno (банк 0 программа 1), на S-YXG50 он будет одинаковым и в GM2, и в GS, и в XG, так как это один и тот же звук, соответсвенно и считается он, как один звук, а не как три.

    Номера звуковых банков для стандартов в S-YXG50:
    XG 0 1 3 6 8 12 14 16 17 18 19 20 24 25 27 28 32 33 34 35 36 37 38 39 40 41 42 43 45 64 65 66 67 68 69 70 71 72 96 97 98 99 100 101 126 127 // 46 банков
    GS 0 1 2 3 4 5 6 7 8 9 10 11 16 17 18 19 24 25 26 32 33 40 126 127 // 23 банка
    GM2 0 1 2 3 4 5 6 7 8 9 // 10 банков

    Смотрим дальше, другой звук пианино (банк 1 программа 3) в GM2 и XG это ElGrPnoK, но в GS это ElGrPno1, то есть это другой звук.
    Ну и раз мы его получили, то почему бы его неиспользовать для XG, и вот он (банк 40 программа 3) ElGrPno1.
    А наш искомый звук ElGrPnoK в GS находится в (банк 8 программа 3).
    Таким образом, мы получили в GM2 - два пианино GrandPno и ElGrPnoK, а в GS и XG - по три пианино: GrandPno, ElGrPnoK и ElGrPno1.
    То есть, вместо (казалось бы) восьми звуков (два в GM2, три в GS, три в XG), у нас всего три.
    При чем и сами семплы также микшуются, из одного семпла делают не одно пианино, а несколько разных.
    Отсюда и размер звукого банка всего 4 Мб для 676 инструментов.
    И из-за этого многие инструменты звучат похоже, потому что отличаются только настройками эффект-процессора: ревером, хорусом и тд.
    То есть синтезируются из одного семпла.

    GS является раширением стандарта Миди - дополнением к GM.
    Т. е. самый простой Roland в 226 инструментов - это всего, где только 98 GS + к 128 GM (а разность в звучании из-за /выше курсивом).
    Софт синт S-YXG50 поддерживает стандарты: GM2, XG и GS (в режиме TG300B).
    Всего S-YXG50 содержит 676 инструментов, в режиме XG доступны 480, в режиме TG300B (GS) доступны 579.
    / Режима GM нет, но звучать миди, записанные в нем, всё равно будут, так как они входят в старшие стандарты GM2, GS и XG. /
    Всего барабанных установок 21: в режиме XG - 11, в режиме TG300B - 10.

    По умолчанию синтезаторы Yamaha (DB50XG, SW60XG, MU10, S-YXG50, YMF724) находятся в режиме XG,
    в этом режиме доступны только XG голоса и XG барабанные установки.
    Чтобы получить доступ к TG300B голосам и TG300B барабанам, нужно сначала переключиться в TG300B режим,
    через MIDI-SysEx команду F0 41 10 42 12 40 00 7F 00 41 F7.
    В TG300B режиме эти синтезаторы соответствуют Roland Sound Canvas (GS стандарту).
    С помощью MIDI-SysEx команды F0 43 10 4С 00 00 7Е 00 F7 можно переключиться обратно в режим XG.
    //Для DB50XG, SW60XG, MU10 путем их перепрограммирования через определенные MIDI-SysEx команды, доступны еще 32 голоса,
    дающие в сумме 800 инструментов в режиме QS300)//.
    Подробнее здесь http://www.studio4all.de/htmle/main77.html

    Чтобы получить доступ ко всем без исключения ресурсам синтезатора, без редактора системных сообщений SysEx не обойтись.
    Например, сообщения о системном сбросе синтезатора, необходимы для того, чтобы привести систему управления синтезатора в правильное исходное состояние. Такое сообщение желательно вставлять в начале каждого проекта на один из его MIDI-треков.
    При этом сообщение о сбросе должно соответствовать стандарту, который поддерживается синтезатором:
    Для GM-синтезатора — F0 7E 7F 09 01 F7  // GM System On
    Для GS-синтезатора — F0 41 10 42 12 40 00 7F 00 41 F7 // GS System On + Reset (Включение GS и сброс всех параметров к настройкам по умолчанию)
    Для ХG-синтезатора — F0 43 10 4С 00 00 7Е 00 F7 // ХG System On
    Для GM2-синтезатора - F0 7E 7F 09 03 F7 // GM2 System On

    Или универсальный вариант:
    Первое MIDI сообщение GM System On, Второе MIDI сообщение GS System On + Reset, Третье MIDI сообщение ХG System On —
    сбрасывается GM > в GM, Roland > в GM >> в GS, а Yamaha > в GM >> в GS >>> в ХG.
    Иначе, если например, //на GS устройстве, а их больше всех//, воспроизвести мидифайл GM (с прописанным сбросом GM System On),
    а следующим воспроизвести миди файл ХG (без прописанного сброса),
    то "Roland" останется в GM и, например, эффект WAH-WAH, который есть и на XG и на GS, но его нет в GM2 и GM, воиспроизведен не будет.

  12. #612
    VEG Автор

    Начал в качестве эксперимента писать парсер WAV-файлов на FASMG (решил задействовать эту более новую версию, заодно и новшества изучу), чтобы потом можно было вставлять сэмплы напрямую из них. Даже конвертацию из signed в unsigned для 16 бит получилось сделать :)

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

  13. #613
    Wlad

    Здравствуйте VEG, это очень хорошая новость, которая не может не радовать :), и пользуясь моментом хотелось бы у вас спросить, какой метод разделения семплов вы выбрали, у каждого конфига будет свой семпл не смотря на дубляж, или несколько конфигов будут ссылаться на один семпл (как в банке) ?

    Wavosaur работает не без потерь, при сохранении меняются младшие биты каждого семпла.

    Редактированием и созданием нового банка я пользуюсь программой Adobe Audition (на данный момент 2017), и я также когда то заметил, что данные изменялись, и как после выяснилось, в настройках\данные\ было включено сглаживание концов 2мс, и сглаживать все границы кроссфейдером 5мс, после отключения этих опций, всё встало на свои места, я в начале подумал что может и в Wavosaur что нибудь отключить надо, хоть я в английском не очень, но многое прочитать и понять могу, и при просмотре там настроек, ничего связанного с изменением данных не нашёл. Также сейчас попробовал в Adobe Audition открыть WAV, и сохранить его под другим именем, данные оказались идентичными :), но у родного WAV файла который я взял за основу, заголовок оказался почему то на два байта меньше, и как выяснилось Wavosaur также делает заголовок WAV на два байта почему то меньше. Сравнил также из любопытства файлы, оригинал WAV, и он же открытый и просто сохраненный Wavosaur, оказалось что действительно данные изменяются практически по всему файлу (в моём случае коды 00h изменились на 01h).

  14. #614
    VEG Автор

    Wlad, пока что за это не брался. Пока что я написал только макрос который читает wav-файл, разбирает его формат, извлекает данные о частоте дискретизации, количестве каналов, разрядности, проверяет является ли оно корректным PCM и если это 16-битный PCM — конвертирует в unsigned. Кстати, хотел спросить — семплы же всегда должны быть моно, в ином случае лучше выдавать ошибку, верно?

    но у родного WAV файла который я взял за основу, заголовок оказался почему то на два байта меньше, и как выяснилось Wavosaur также делает заголовок WAV на два байта почему то меньше

    Есть разные варианты заголовка. Секция fmt может быть 16 или 18 байт в случае если используется обычный PCM без расширений. Вот и разница в 2 байта. У меня макрос умный — он найдёт нужные секции даже если перед ними будет куча левых данных :) Извлечение информации о лупах тоже можно прикрутить, но это уже буду изучать какие там данные в оригинальных банках — может быть там в тех семплах что по 10 раз используются везде разные параметры start и loop, тогда лучше будет данные эти брать не из wav-файла, а указывать в asm-файле.

    Кстати да, неиспользуемых байт между семплами достаточно много. Например, в 4-мегабайтном банке я насчитал 7781 неиспользуемых байт между семплами (если я, конечно, не ошибся в коде, который считал). Глянул бегло — могие из неиспользуемых байт имеют значение 0x80. Это о же самое, что и 0x00 в signed PCM, то есть небольшие фрагменты тишины. То есть они там прям уже после того как собрали файл с семплами руками отсекали тишину что-ли? Складывается впечатление, что у них там этот файл собирался полностью вручную, поэтому пересобрать его было проблематично, или же они не хотели менять его по каким-то религиозным соображениям, и все правки вносили строго в маленький tbl-файл, отсекая лишние части семплов там.

  15. #615
    Wlad

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

    То есть они там прям уже после того как собрали файл с семплами руками отсекали тишину что-ли?

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

  16. #616
    YAMAHA User

    Wlad

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

    Вы говорите :

    3C-C5 44100
    3B-B4 41344
    3A-Bb4 39966,1
    39-A4 38588,2
    38-G#4 37210,4
    37-G4 35831,8
    36-F#4 33075
    35-F4 30319,8
    34-E4 28940,4
    33-Eb4 27562,2
    32-D4 26184,1
    31-Db4 24806
    30-C4 22050

    Таким образом получается, что каждая нота отличается лишь тем , что с какой скоростью читается тот или иной сэемпл...
    Теперь если учесть что из RAW можно получить как 44100/8 так и 22050/16 , возникает интересная штуковина... если теперь мы получив 22050/16 откроем это в SoundForge 5.0 или новее и тупо сменим частоту в SF это приведёт к изменени.ю скорости воспризведения... то мы получим при лобовом конветировании 22050/16 в 44100/16 файл с удвоенной скоростью воспроизведения, но с наличием ВСЕГО частотного спектра. А вот если теперь исходя из этого попроболвать пересобрать скорости восспроизведения нот ? Ну файл то у нас уже будет 44100/16 и причём чистый )

  17. #617
    YAMAHA User

    Вот пример : https://yadi.sk/d/KGfc3LOL3HVctB
    То есть , поскольку файл с окончанием на 1 это тот же самый файл который с окончанием на 0 только с вдвое увеличенной скоростью - ВЧ в нём есть... таким образом при если учесть такую особенность, то можно в самом синте просто понизить части нот где не требуется наличие чистых ВЧ ) возможно вырастет качество )

  18. #618
    Wlad

    если учесть что из RAW можно получить как 44100/8 так и 22050/16

    Тут YAMAHA User ошибка, моя ошибка, которая возникла из за путаницы с типом данных, и из за сдвинутых ROOT нот на октаву. На самом деле синтезатор читает семплы 44100 8-бит и 44100 16-бит, то есть 44100 в чистом виде (один к одному), можно также синт заставить читать семплы хоть 176400, достаточно только указать нужную ROOT ноту семплу. Что бы синтезатор заставить читать семплы 22050, YAMAHA указала в конфигах синтезатору читать семплы в два раза медленней, т.е. родным нотам семплов указала октаву выше. Если сделать как вы предлагаете, то результат будет тот же, т.е. придётся синтезатору указывать теперь ROOT на октаву ниже что бы с корректной скоростью читать семплы, а если этого не сделать, то получится так, что синтезатор начнёт читать семплы в два раза быстрей, и в результате на выходе синтезатора скорость получится как в вашем примере : 1Sound008-1.wav, а если вы ещё и банк с увеличенной в двое скоростью решите чем нибудь обработать, например "шумодавом", или ещё чем нибудь, то при вдвое заниженной скорости чтения семпла синтезатором, в семплах становится слышны сильные искажения, в общем звук становится вообще не приемлемым.

  19. #619
    Alexys

    YAMAHA User
    Такой настырностью Вы ничего не добьетесь.
    Если у Вас есть вопросы или Вам нужна какая-то помощь, пожалуйста, задайте или попросите. Ведь связаться с нами можно разными способами.
    К чему здесь Ваши рассуждения ?
    Для возможности записи или сохранения непрерывного сигнала (звука или иных аналоговых сигналов) цифровым способом была придумана система разделения такого сигнала на отдельные участки-элементы, т.е. дискретизация. Характеризуется она количеством отсчетов на период колебания сигнала. Частота дискретизации (ЧД) - это количество отсчетов за единицу времени. Чем выше частота полезного сигнала (звука), тем выше должна быть частота дискретизации чтобы сохранить этот сигнал в неизменной форме. Иначе - потеря.
    Поскольку звук инструментов состоит из сигналов сложной формы, то для него нужна ЧД такая, чтобы сохранить самые высшие частоты и гармоники. Как правило, 44100 Гц достаточно, поскольку верхней границей частоты при такой скорости отсчетов будет величина, равная половине ЧД, т.е. 22050 Гц, что превышает возможную верхнюю границу слухового диапазона человека.
    Поскольку в цифровых системах нет возможности изменять частоты сигналов прямым путем, т.е. подстройкой генераторов, переключением делителей, выделением гармоник, то единственным способом изменить частоту полезного сигнала является изменение ЧД.
    НО !!
    Такое изменение действует по принципу изменения скорости проигрываемого носителя, например, магнитофонной ленты или граммофонной пластинки. А значит ВСЕ составляющие полезный сигнал частоты также будут меняться. При этом, разумеется, спектр полезного сигнала будет смещаться полностью, теряя как самые низкие, так и самые высокие частоты.
    Отсюда следует, что чтобы сохранить полезный сигнал, нужно ЧД изменять в небольших пределах. А значит нужно создать дубликаты отдельных сигналов, т.е. сэмплы, оцифровывая их на разных тонах звучания. Идеальным случаем является запись каждого отдельного тона инструмента в свой сэмпл, т.е. по одному на ноту. Самым худшим - один сэмпл на весь нотный ряд. Ограничение - в количестве занимаемого сэмплами места.
    Поэтому все спекуляции на тему улучшения сигнала, будь то повышение частоты или снижение шума не имеют места. Причем снижение шума возможно лишь при некоторых условиях, когда достаточно ЧД и битности, чтобы поднять или снизить динамический диапазон.
    Частоту же поднять невозможно, если она либо отустствовала в сигнале, либо ЧД при оцифровке была такой, что эта частота не могла быть оцифрована. Повышение ЧД приводит всего-лишь к смещению спектра в более высокие частоты, но НИКАК не добавляет высоких частот.
    И вот здесь еще можно посмотреть.
    https://ru.wikipedia.org/wiki/%D0%A7%D0%B0%D1%81%D1%82%D0%BE%D1%82%D0%B0_%D0%B4%D0%B8%D1%81%D0%BA%D1%80%D0%B5%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8

  20. #620
    YAMAHA User

    Я тут всё слушаю две версии синтезатора с банком который под YMF-724 и с банком который в оригинале. Я немогу пояснить почему , но та версия которая с банком под S-YXG50 звучит богаче... хотя в ней больше шума. Я думаю , что в 44100 семплировать вредно всё же. Не случайно даже сами Roland в своих синтезаторах обрезают ЧД на уровне 32К... может всё таки лучше взять и семплировать банк в 32К ? Так не будет ощущения дешёвого себилянта на ВЧ. Сейчас же в 44,1К такое ощущение есть. Не знаю почему, на SCVA такой бяки точно нет.

  21. #621
    Wlad

    YAMAHA User, после конвертации банка в 44100, длина волны увеличивается в 4 раза !, и без потерь тут ни как не обойтись, т.к. настройки инструментов в синтезаторе делались на основе и с учётом семплов 22050 8-бит, как я уже ранее писал, при создании инструмента вначале семплы подрезаются Cutoff фильтром, что бы обрезать шум, из за чего они теряют яркость, а после эту яркость получают при помощи резонатора (не ужели вы не слышите что звук синтезатора довольно выразительно отдаёт резонатором). Вот вы говорите

    что в 44100 семплировать вредно всё же.

    как раз наоборот, при замене Standart kit на семплы 44100 16, и некоторых других инструментов, звук стал качественным, выразительным, и чистым.

    может всё таки лучше взять и семплировать банк в 32К ?

    У Roland, и некоторых других синтезаторов, да, читаются семплы : 32000, 48000, и это их особенность, а в YAMAHe по другому, здесь нет таких ч.д., здесь : 22050, 44100, и т.д.. Вообще конечно можно подогнать при помощи полутонов и спец настроек 32000, 48000, я в ранних экспериментах добился чтения семплов 48000 (правда не совсем корректно:) ), но это требует дополнительных расчётов, в общем это не целесообразно.

    VEG, я время от времени копаюсь в движке изучая его, кое что обнаружил, и хотел бы поделится некоторой информацией.
    82FBh - Здесь находится подпрограмма которая читает таблички барабанов (05 Drums Samples) в режиме XG
    83D6h - а здесь находится подпрограмма, которая читает также таблички барабанов (05 Drums Samples), только уже в режиме GS, и как выяснилось, XG-GS читают и понимают одни и те же таблички немного по разному, после эксперимента выяснилось, самое первое значение (в основном оно = 3Ch) в табличках в XG не используется, а используется только в GS в качестве регулировки тональности семпла, как появится возможность, составлю табличку соответствия.
    VEG, ранее заходил разговор о пост обработке, подскажите пожалуйста, где в коде она находится, или откуда происходит её вызов, очень хочется изучить эту функцию, т.к. семплы теперь будут использоваться высокого качества, и хотелось бы узнать, какое у неё предназначение.

  22. #622
    Wlad

    YAMAHA User, однако нет, после многочисленных тестов, формат 44100 16-бит лучше во всех отношениях ! :)

  23. #623
    VEG Автор

    Wlad, спасибо за информацию о том назначение каких функций вы выяснили. А функция 0x100138F0, на которую вы ссылались ранее, читает конфиги барабанов в каком режиме тогда?

    Вариантов функции, которая вызывается после чтения семпла, несколько. Выбор зависит от параметра Process в ini-файле, наличия MMX и ещё чего-то. Выбирает подходящую функцию по адресу 0x100191A0, указатель на эту функцию записывается в [ecx+34h].

    Варианты этой функции:
    — 0x1001BDE0
    — 0x1001BB50
    — 0x1001B380
    — 0x1001A570
    — 0x1001A310

    Полагаю, что все они делают одно и то же, просто немного по-разному. Настройка Process переключает между первыми двумя и последними тремя. Первые две переключаются какой-то неизвестной переменной в [eax+4]. Последние 3 переключаются переменной [eax+31h] и [eax+4]. [eax+31h], полагаю, отражает наличие MMX, поскольку если там булево true, то выбирается вариант функции 0x1001B380 в котором используется MMX. Хотя может там и в других используется, я не очень внимательно смотрел.

  24. #624
    YAMAHA User

    Я тут почти доделал пак )
    https://yadi.sk/d/tM4VUoQj3HbFz7
    теперь в нём есть и EULA которая сообщает людям о том что было бы не плохо купить всё это если оно человеку понравилось ) что касается ямахи , я её там оставил S-YXG50 / 4 MB почему-то иные версии звукчат как-то не очень. Да , классическая ямаха шумновата , но звук боле ебогатый что-ли на мой слух.

    Wlad
    Тесты - одно , уши - другое ) вот когдау вас наушники какие нибудь простенькие в которых ВЧ предел до 20 КГц - может и лучше. У меня же MDR-1A и там ВЧ предел до 100 КГц и как следствие верхи прут мама не горюй как... кстати , я очень много грязи в этих ушах на MP3 услышал и понял что когда синты слишком звонко звучат - то звук получается дешёвым что-ли... начинает отдавать OPL3 звучанием. Поэтому High Pass фильтр просто нужен ) я бы останоывился на 22050/16.

  25. #625
    Wlad

    VEG, спасибо вам за информацию, это всё что нужно.
    Ниже привожу адреса в коде, которые читают табличку барабана в режиме XG (конфиг семпла барабана)

    0.1.2.3.4.5.6.7.8.9.a.b.c.d.e.f.101112   1314 15 1617  18191a    1b1c1d
    -----------------------------------------------------------------------
    3C706603335F5F7F0000017F105E4040FFFF51   0FCF 00 0C84  242B80    000006
    

    0. - используется только в GS
    1. - 0001380Dh (mov dl,[edx+01h])
    с 2. по a. - эти значения читаются по адресу 000082FBh, и срабатывают один раз при старте синтезатора, а остальные работают в реальном времени.
    b. - 000139E7h (movzx ax,[eax+0Bh])
    c. - 000134B1h (movzx ax,[ecx+0Ch])
    d. - 000123CEh (mov cl,[eax+0Dh])
    e. - 00012447h (movsx dx,[ecx+0Eh])
    f. - 000124A0h (movsx dx,[ecx+0Fh])
    10 - 00016EA5h (mov dl,[eax+10h]), оно же сравнивается по адресу 00005BFEh (cmp byte ptr [ecx+10h],FFh) т.е. если значение здесь 0FFh, то 11 кодом не используется.
    11 - 0000AFDA (movzx eax,[edx+11h])
    12 - 0001379Dh (movzx cx,[edx+12h])
    По адресу c 000138F7h и ниже, тут читаются размеры регионов семплов, Start 13h-14h, 15h-не используется, Loop 16h-17h, а также и указатель на семпл - 18h-19h-1Ah.
    1b - 00005C44h (mov dl,[ecx+1Bh]) здесь считывается код который отвечает за разрядность, а также он же читается и в 0001393Eh (mov al,[eax+1Bh])
    1c - используется только в GS, пока не выяснял что он делает, но похоже что отвечает так же за тональность (полутон)
    1d - 00013787h - (movsx cx,[edx+1Dh]) - читает последний код таблицы барабанов

  26. #626
    Wlad

    YAMAHA User, чем больше я изучаю этот синтезатор, тем больше начинаю понимать в нём разные методы обработки звука. В данном синтезаторе как выяснилось, уже изначально семплы завышены в допустимых верхах, это нужно для того что бы сбалансировать звук после отсекания Cutoff фильтром шума, что бы после этой манипуляции семпл не слал совсем тусклым.
    Да, MDR-1A наушники хорошие, но что с банком не делай, всё равно его уже не исправишь, и грязь в нём неизбежна. Вот к примеру "шумодав", да, помогает, но, после его применения некоторые инструменты получаются чистыми, а некоторые тусклыми и не выразительными, к тому же с нарушенными Луп регионами. Что касается 22050/16, то да, звук у него довольно не плохой получился, сразу разница по сравнению с 22050/8 заметна, но я сторонник чистоты звука, и именно поэтому было принято решение заменить все семплы на 44100/16.

  27. #627
    YAMAHA User

    А чем вы вшиваете ресурсы в файлы ?

  28. #628
    VEG Автор

    YAMAHA User, можно при помощи Resource Hacker.

  29. #629
    YAMAHA User

    А кактам привязать ресурсы ? Я встраиваю ресурсы в RCData - они там есть ) , но вот что надо сделать потом чтоб не было потребности в файлах ? Я пытаюсь встроить в MUNT два файла PCM и control ) не удаётся )

  30. #630
    VEG Автор

    YAMAHA User, если программа не ищет свои файлы в ресурсах — она и не найдёт их. Я специально доработал syxg50.dll, чтобы она искала свои файлы в ресурсах, а если там нет — то чтобы смотрела уже в своей папке.

  31. #631
    YAMAHA User

    А как для примера добоавлять ресурсы ?
    Что именно вы дорабатывали и каким образом ? Надеюсь это не реверсинжинерингом ?

  32. #632
    VEG Автор

    А как для примера добоавлять ресурсы ?

    Ресурсы вы можете добавлять при помощи Resource Hacker. Но, как я сказал выше, если программа не обучена читать эти файлы из ресурсов — она и не будет их оттуда читать. В S-YXG50 был дописан соответствующий код, поэтому он и может читать свои файлы из ресурсов.

    Надеюсь это не реверсинжинерингом ?

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

  33. #633
    YAMAHA User

    Тогда я не осилю... я хотел собрать в единые файлы Roland SoundCanvas VA , MUNT 16 ch VST , YAMAHA S-YXG2006 , Edirol HyperCanvas , M-Audiog GM-Module , Purity и ещё кое что ) Но я так как вы не умею , а дать вам задание... ну с учётом что результат я надеялся получить за бесплатно - то это скорее всего тоже равно нулю.

  34. #634
    VEG Автор

    Всему можно научиться =) Главное сильное желание и соответственно готовность потратить на это очень много времени.

  35. #635
    Alexys

    YAMAHA User
    Вы бы уже хоть с нами, чтоль, связались для полноты картины. Зачем блог забивать своими умозаключениями !? А то не ровен час - придется VEGу банхаммер делать или чистить блог от ненужных записей. Вручную !

  36. #636
    YAMAHA User

    jid-ы есть ? Я могу связаться по XMPP , но я не знаю какой jid у данного ресурса для обсуждения того что не совсем по теме ямах.

  37. #637
    Alexys

    YAMAHA User
    Вам уже несколько раз сказано: Прочтите блог от начала ! Уже несколько раз повторено, что мы общаемся посредством программы ooVoo. Не хотите так, то можете найти меня, например на old-games.ru Разумеется я там под тем же ником, что и здесь.

  38. #638
    YAMAHA User

    Возникла идея ) , но я не знаю как к ней отнесутся люди )
    Здесь мне писали что тон задаётся только тем , что с какой скоростью читается сэмпл , а сэмпл всегда один и тот же.
    Так вот у моей подруги есть синтезатор YAMAHA PSR какой-то ) вроде PSR-300... если с её снтезатора выписать по одной ноте каждого методического инструмента , этогобудет достаточно для качественного банка ? Если да - как это сделать ? Как вариант, я могу предложить автору данного проекта создать мидяшник в котором в жёсткой последовности будут нажиматься нужные ноты и поскольку есть возможность выписать качественно с профессионального инструмента сэмплы , то могу попытаться ей потом передать мидяшник и попросить её восспроизвести и записать с её ямахи ) даже можно будет при желании в студийном качестве сделать. Я имею ввиду что с выхода ямахи на качественный АЦП подать сигнал и записать в нужной автору последовности. Тем самым получить банк от профессионального инструмента ) ещё эту идею можно подать на MIDI .ru может там музыканты одобрят )

  39. #639
    НК

    YAMAHA User
    Так на рутреккере уже давно есть. И не только Yamaha PSR 3000 а Тайрос и Мотиф. Я часто пользуюсь сэмлами PSR S900.

  40. #640
    YAMAHA User

    Тогда я запутался ) в чём сложность замены сэмплов что их такдолго меняет автор ?

  41. #641
    VEG Автор

    Во-первых, я не занимаюсь модификацией банков. Этим занимается Wlad. Во-вторых, чтобы делать суждения о сложности той или иной работы, нужно представлять, что это за работа и как она делается. А для этого вам надо самим попробовать сделать что-то аналогичное. То есть взять, отреверсить какую-то программу, разобрать формат её файлов без документации и без инструментов для работы с такими файлами, сделать свои инструменты для работы с такими файлами, сделать необходимую работу с использованием этих инструментов, всё с нуля. А до тех пор, пока вы сами подобное не в состоянии сделать — считайте, что это безмерно сложно. Это касается любой работы, касательно способов выполнения которой вы не в курсе. Просто по умолчанию.

    Мне иногда пишут что-то вроде «ну сделайте чтобы можно было свои трассы в игру добавлять, ну что тут сложного, на вечер работы». Нет, это не вечер работы. Это такая работа, что можно засесть на год, оглянуться назад, и удивиться, как пролетело время, а ещё не готово. Вот что за привычка у людей делать такие допущения о вещах, касательно которых они не имеют ни малейшего представления, каким образом и как долго они делаются? А скажешь — пожалуйста, возьмите и сделайте сами, всего же один вечер, что вам стоит? Обижаются. Говорят, что не умеют в ассемблер. Ну так изучение ассемблера — тоже инвестиция времени в решение задачи. Здесь постоянно сталкиваешься с чем-то новым, постоянно приходится учиться, постоянно искать новые подходы. Никто не рождается с какими-то готовыми навыками. Мне хотелось что-то изменить в готовых программах — я научился и теперь могу это делать в какой-то мере.

    Да, вполне нормально написать автору какой-нибудь работы, мол вот так-то и так-то на ваш взгляд было бы лучше. Если автору идея понравится — возможно, он возьмёт её в оборот. Но тон «что тут сложного» неуместен. Вы таким образом полностью обесцениваете труд автора, как бы заявляя, что сами бы справились за вечер, но вам просто лень. Если же вам какая-то вещь нужна, автор не планирует ей заниматься, и вы не хотите сами тратить на это своё время (время на изучение предметной области и на саму работу) — вы можете нанять кого-нибудь для этой же работы (включая даже самого автора, если он заинтересован в подобном сотрудничестве). Всё просто. Но даже в этом случае «что тут сложного» (скажем, в ответ на ценник в разы выше ваших ожиданий) также будет совершенно неуместным. Не надо так.

  42. #642
    Alexys

    YAMAHA User

    Возникла идея ) , но я не знаю как к ней отнесутся люди )

    Раз не понимаете по-человечески, то отнесемся уже предвзято плохо !!

    Здесь мне писали что тон задаётся только тем , что с какой скоростью читается сэмпл , а сэмпл всегда один и тот же.

    Не всегда один и тот же ! Тон действительно задается с помощью ЧД, потому заранее нельзя предугадать, что именно этот тон будет звучать именно так как надо.
    Цитирую свое сообщение от 30 апреля:
    ""Отсюда следует, что чтобы сохранить полезный сигнал, нужно ЧД изменять в небольших пределах. А значит нужно создать дубликаты отдельных сигналов, т.е. сэмплы, оцифровывая их на разных тонах звучания. Идеальным случаем является запись каждого отдельного тона инструмента в свой сэмпл, т.е. по одному на ноту. Самым худшим - один сэмпл на весь нотный ряд. ""
    Т.е. Самое лучшее - это один сэмпл на ноту, самое худшее - один сэмпл на весь нотный ряд. Что непонятного ? Вопросы тут в другом - где взять качественно оцифрованные сэмплы, каждый на одну ноту ? Причем бесплатно. (Даю справку: в Ямахе XG50 инструменты созданы в среднем четырьмя-шестью сэмплами на весь нотный ряд. Иногда больше, иногда меньше. Это значит, что это далеко НЕ профессионально качественно набранные инструменты). В железных Ямахах почти также. Тогда на кой черт нам сдались НЕ профессионально набранные инструменты ?

    Так вот у моей подруги есть синтезатор YAMAHA PSR какой-то ) вроде PSR-300... если с её снтезатора выписать по одной ноте каждого методического инструмента , этогобудет достаточно для качественного банка ?

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

    Если да - как это сделать ?

    Вот и попробуйте сделать что-то самостоятельно, тогда и поймете, насколько это сложно или легко. Что тут сложного ?

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

    Ну, уж если это Вам не под силу, о чем тогда вообще говорить ? Откройте редактор какой-нибудь (могу дать подсказку - Сонар, Кубэйс или на худший случай ФЛ Студио), создайте трек и в нотном стане наберите ноты последовательно друг за другом как по длительности, так и по высоте. На все ноты по высоте.

    даже можно будет при желании в студийном качестве сделать.

    Что значит для Вас "студийное качество" ? - аналоговый выход Yamaha PSR-300 ?

    Я имею ввиду что с выхода ямахи на качественный АЦП подать сигнал и записать в нужной автору последовности.

    Та, делать нам больше нечего !!

    Тогда я запутался ) в чём сложность замены сэмплов что их такдолго меняет автор ?

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

  43. #643
    YAMAHA User

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

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

    Просто если у вас например в файле содержится ну пусть будет 8589934592 сэмплов , то если файл для замены будет содержать столько же , и будет такой же длины и с таким же разрешением - то достаточно просто подменить первый вторым ) , а вот если во втором будет нарушена хотя бы часть Loop регионов хотя бы в нескольких инструментах , то вот тут рабооооооты. Это вылавливать на каких нотах , какие сэемплы , при какой длине и всё такое.

  44. #644
    VEG Автор

    YAMAHA User, ещё раз, я не занимаюсь созданием новых банков. Вообще. Я сделал portable версию S-YXG50 VSTi (и хочу сделать такую же версию S-YXG2006LE), также я начал писать скрипт разборки/сборки tbl-файлов от S-YXG50 (по информации, что предоставил Wlad), чтобы просто была более удобная возможность подправить оригинальные банки или даже сделать свой. Правда, пока что у меня работа в этом направлении сейчас стоит на месте, есть только скрипт для сборки кучи WAV-файлов в один файл с сырыми данными (вместе с автоматической конвертацией signed 16bit PCM в unsigend 16bit PCM), но от него без всего остального толку мало. Свои банки я не делал и не планирую делать. Я не занимаюсь созданием музыки и т.д., мне самому нужен только звук оригинального банка для прослушивания кое-каких старых MIDI-файлов. Именно поэтому я не раз подчёркивал, что S-YXG50 Portable VSTi выдаёт звук идентичный оригинальному S-YXG50 VSTi, я очень пристально следил за тем, чтобы случайно ничего в нём не изменить.

    Вы здесь как-то указали на различие в звучании WDM и VSTi версий — в вашей записи ощутимую разницу я услышал. Спасибо за указание на это. Судя по всему, проблема с variation. Хочу проверить на реальной машине под Windows XP, действительно ли такова разница, и может даже попытаться выяснить причину, хотя сомневаюсь, что получится, наверняка уж слишком это глубоко будет в коде движка. Кстати, как вы записывали вывод WDM-версии S-YXG50?

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

    а вот если во втором будет нарушена хотя бы часть Loop регионов хотя бы в нескольких инструментах

    Я вам сразу скажу, что это всё будет нарушено сразу во всех инструментах. С каждым отдельным звуком и связанными с ним параметрами нужно работать одновременно, для каждого инструмента в отдельности. Невозможно взять и записать пачку новых звуков таким образом, чтобы они сразу подошли под параметры, указанные в tbl-файле. Ну то есть, конечно, шанс такового имеется. Но он, наверное, даже меньше, чем шанс того, что вы сегодня найдёте чемодан с миллионом долларов :)

  45. #645
    Wlad

    Всем доброго вечера и с наступающим праздником !

    в чём сложность замены сэмплов что их такдолго меняет автор ?

    Что бы к примеру заменить группу семплов одного инструмента, для этого нужно :
    1. - Найти или создать подходящие семплы, которых должно быть больше на инструмент, т.к. от этого в первую зависит качество инструмента.
    2. - Создать к имеющимся семплам LOOP регионы, и это очень ответственный момент который требует не мало времени.
    3. - Распределить семплы по клавиатуре так, что бы слышимость стыков между переходами от одного региону к другому свести к минимуму.
    4. - Вставить семплы в банк, подсчитать START и LOOP регионы, а также и сам указатель, эти значения далее будут вставлены в конфиги.
    4. - Создать к каждому семплу свой конфиг, в которых будут указаны START, LOOP и указатель, а также регионы на клавиатуре и ROOT ноты.
    5. - Указать в другой таблице адрес, где находятся эти конфиги, а также после всего этого, нужно сбалансировать этот "сырой" инструмент по громкости, при помощи специальной настройки, которая может применяться по всей клавиатуре в виде сложной огибающей, и которая состоит из нескольких частей (пока заметил только пять точек). После всего этого, нужно запустить два синтезатора, с новым инструментом, и оригинальный синтезатор, и сравнять громкость нового инструмента со старым, что бы избежать нарушения баланса громкости.
    Как видите YAMAHA User, не всё так просто как вы думали, а вот исправить ЛУП регионы в инструментах, это довольно простая задача, т.к. я все инструменты задокументировал, и теперь не составит труда найти нужный нарушенный регион в семпле и исправить его, если хотите действительно заняться чем нибудь полезным, то можете этот дефект у синтезатора исправить, а потом им со всеми поделится, я в этом могу вам помочь (покажу как это делается), т.к. ничего сложного там нет, да и немного нарушений в нём образовалось, а там может во вкус войдёте, и свой банк захотите создать, сразу в 88200, или в 176400 :).
    Реверс-инжиниринг, это действительно титанический труд, не зависимо от того, игра это, синтезатор, или какая нибудь программа, всё это требует - цепкой хватки, огромного терпения, много времени, интуиция, а также трезвый взгляд на то, готовы ли вы до конца пройти этот очень нелёгкий путь, на пути которого встречаются препятствия в виде сложных задач, "ребусов", сложной структуры и данных и мн. др., и не сдаться по середине проекта потратив много времени и сил в пустую. Лично моё мнение, любой может этого добиться.
    YAMAHA User, самый целесообразный способ получить практически оригинал звука YAMAHA PSR-300, это только сделать дампы его WAVEROM, т.к. у них с S-YXG50 архитектура одинаковая и это одно и то же поколение, и мне не составит особого труда перенести его на движок и получить Softsynthesizer YAMAHA PSR-300, и при этом банк будет размером ~2mb т.к. он будет оригинал вместе с таблицами, а если сделать так как вы предлагаете, банк получится не ~2mb, скорее ближе к размеру ~2gb, и уйма не оправдано потраченного времени.
    Хочу также выложить синтезатор, в котором мы с Alexysем заменили весь Standart kit, но пока не балансировали его сильно по громкостям и т.д. (альфа версия, только для оценки семплов), а также нужно заменить несколько семплов (не подошли). Семплы в основном все брались из EZ Drummer 2 (живые засемплированные барабаны), а также некоторые из PSR-S900, по плану этот набор должен был быть уже готов, но к сожалению я неожиданно заболел гриппом, и целую неделю был с высокой температурой, поэтому как то не до этого было, а сейчас уже готов продолжать проект дальше :). Выложить решил потому, что бы те кому это интересно, смогли оценить качество используемых семплов, а также увидеть, что к проекту ни кто не остыл :). https://yadi.sk/d/JZIMPl5E3HrYJF
    Также на неиспользуемые клавиши в наборе, планируем прикрутить дополнительные барабаны, и это не будет нарушением стандарта, а расширением, т.к. эти клавиши ни где не используются, а дополнительная перкуссия, басс бочки, рабочие барабаны, томы, и мн. др. лишними не будут :).

  46. #646
    Alexys

    Не, ну попадаются же такие "сообразительные" экземпляры !! Мало того, что тупят по-черному, так еще и отказываются внимать тому, что говорят ! Если Вам, Yamaha User, по каким-то причинам не нравятся мои слова, то прислушайтесь хотя бы к VEGу. Нахватавшись "верхушек" в знаниях - многого не сделаешь ! С Вашим подходом дальше магнитофонной пленки не пройти ! Может и хватит поправить головку или тонвал почистить, но и в этом я не особо уверен !
    Разумеется нельзя просто абы как воткнуть в банк какие-то сэмплы !
    Разумеется сам по себе банк - это ничто в сравнении с принципиальным устройством комплекса инструментов.
    Разумеется чтобы что-то знать, надо учиться и задавать вопросы. Только делать это поскромней, а не так вероломно, как ВЫ !!

  47. #647
    Wlad

    также я начал писать скрипт разборки/сборки tbl-файлов от S-YXG50 (по информации, что предоставил Wlad), чтобы просто была более удобная возможность подправить оригинальные банки или даже сделать свой

    VEG, если вам понадобится какая нибудь информация по поводу табличек (любая), а также уточнить что нибудь по их поводу, или потребуется какая нибудь помощь в этом деле, я всегда рад буду вам помочь, независимо от сложности. В табличках, я в ближайшее время исправлю все недочёты и возможные ошибки, которые описаны в заголовках и расшифровках некоторых значений, т.к. проект YMF-724 пришлось делать с нуля, и заголовки некоторых таблиц пришлось копировать со старого проекта, а упор мной делался в первую очередь на форматирование и достоверность таблиц, поэтому в ближайшее время всё внимательно перепроверю и выложу, что бы когда понадобится к ней обратится, пусть будет уже 100% достоверная информация, что бы не было ни каких сомнений :).

  48. #648
    YAMAHA User

    VEG

    Кстати, как вы записывали вывод WDM-версии S-YXG50?

    Audigy RX запись по What U Hear ) причём я писал и тои то этим же методом.

    Тут ещё о реверсе возник вопрос и к вам и к Wlad
    И так...есть такой синтезатор CoolSoft VirtualMIDISynth
    Так жеесть такая штука как CoolSoft MIDI Mapper Configurator
    Теперь рассказываю что не так.

    Если второе использовать в Win Vista/7 - проблем нет , но в 8-10 есть проблемы , конкретно его надо ставить. Иначе он не работает. Но если расковырять CoolSoft VirtualMIDISynth и взять оттудаконфигуратр - то там можно в 8-10 поставить MIID устройство. Проблема в том, что такой конфигуратор вот оно : https://yadi.sk/d/BU1ve3rh3Hs4NE распаковать в любую папку и подправить путь в reg файле перед импортом. Хотелось бы портэйбл , чтоб оно не было зависимо от реестра и чтоб файл bass.dll был интегрирован в ресурсы.

    Я думаю , многим это будет полезно , потому что сейчас мне приходится городить в своём синтпаке это через Cameyo и рззмер одного только этогофайла составляет около 5 МБ.

  49. #649
    Wlad

    Обновляю проект, с уже более менее сбалансированными барабанами в Standart kit, по крайней мере музыку уже можно нормально слушать :).
    https://yadi.sk/d/JZIMPl5E3HrYJF

  50. #650
    Alexys

    YAMAHA User
    Сколько даете ?

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