Автор Тема: обсуждение конвертерa музыки для Dune MIDI2DUNE [SMD]  (Прочитано 16623 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2498
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
обсуждение конвертерa музыки для Dune MIDI2DUNE [SMD]
« Ответ #90 : 04 Февраль 2018, 19:15:36 »
видимо я мало проклинал дефлемаск... потому что он решил меня добить:



три разноплановые модуляции в одной ноте!!! триииии... чтоб ему икалось этому дефлемаску :)


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

Добавлено позже:
сраные слайды... черт ногу сломит там раздуплить как правильно все перенести в GEMS. мораль: пишите музыку в дефлемаске без слайдов :) ну их в жопу...



оригинальное звучание:

« Последнее редактирование: 04 Февраль 2018, 21:14:44 от SeregaZ »

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2498
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
обсуждение конвертерa музыки для Dune MIDI2DUNE [SMD]
« Ответ #91 : 18 Февраль 2018, 21:30:48 »
последние паки доложил, какие удалось распаковать. и то некоторые все-таки с припиской bad - то звук не тот, то еще что-то мне не понравилось. Shaq fu например.

так-же все еще в подвисшем состоянии Comix Zone и Ooze - сраный ADPCM :) отдизасемблите уже ктонить его аудио драйвер и ткните носом какая там формула для раскодирования этого сраного ADPCM... таблицу то я в файле драйвера вижу - я не вижу чо с ней делать :) что на что помножить и куда что прибавить, чтоб обычные 8 бит получить.

так-же в подвисшем состоянии двухбанковые GEMS игры - FlashBack, Zero Tolerance, WWF Wrestle Mania The Arcade Game. в первых двух только мелодии распаковались. а где спецэффекты то? а в рестлинге не хватает сэмплов с именами персонажей и мелодии при победе. там была еще 4 игра какая-то тоже двухбанковая... забыл.

B.O.B - видимо корявые адреса у меня были. при распаковке лезут всякие ошибки.
Brutal Fury - вроде начинает распаковывать и косячит
Chakan - видимо адреса не верные.
Nightmare Circus - распаковывает... но с ошибками. мож модифицированный GEMS, а мож мои кривые руки...
Duke Nukem - видимо два банка и какое-то сжатие, так как сэмплы хрипят пердят.
NBA Hang Time - пустые дорожки распаковались. видимо корявые адреса.
Wacky Worlds - нет адресов чтоб использовать распаковку
World Series Baseball '98 - 3 байтного вида треки и распаковываются с ошибками
Xperts - видимо химиченный GEMS - ошибки лезут при распаковке.
Death and Return of Superman, The - нет адресов.
Double Dragon V The Shadow Falls - проблема с сэмплами и видимо там 2 банка.

так что ежели кто сможет распаковать эти игры - шлите архивы :) добавлю в базу для скачивания.
« Последнее редактирование: 25 Февраль 2018, 00:09:03 от SeregaZ »

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2498
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
обсуждение конвертерa музыки для Dune MIDI2DUNE [SMD]
« Ответ #92 : 25 Февраль 2018, 00:04:51 »
как оказалось получилось выкрутится с теми ADPCM сэмплами Comix Zone и Ooze без понимания того, как работает алгоритм :) более подробно мое горе расследование здесь: http://www.emu-land.net/forum/index.php/topic,48579.msg1346495.html#msg1346495

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

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2498
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2498
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
кровавые кнбшники заблочили ютуб... а я в этот момент заливал видео о том, как сделать более менее качественную конвертацию из midi в gems. вот как после такого не проклясть этих тупых ахентов спецслужб? напомню - у нас блокируют ютуб в районе 9 часов вечера, когда взял себе привычку устраивать прямые трансляции один горе-оппозиционер. в результате я сам не могу посмотреть что я там назаливал :)


Добавлено позже:
вода и сопли об импорте изображения в редактор. точнее импорте изображения в какой-либо из экранов игры.

« Последнее редактирование: 26 Июнь 2018, 13:56:59 от SeregaZ »

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2498
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
обсуждение конвертерa музыки для Dune MIDI2DUNE [SMD]
« Ответ #95 : 12 Август 2018, 18:26:59 »

Оффлайн Razor

  • Пользователь
  • Сообщений: 1781
  • Пол: Мужской
  • Gotta Go Fast!
    • ВКонтакте
    • Youtube
    • Просмотр профиля
обсуждение конвертерa музыки для Dune MIDI2DUNE [SMD]
« Ответ #96 : 12 Август 2018, 19:16:36 »
Крутой функционал, хотя лично мне не хватает конкретно хорошего редактора GEMS, плюс конвертера из Midi  :lol:

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2498
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
обсуждение конвертерa музыки для Dune MIDI2DUNE [SMD]
« Ответ #97 : 12 Август 2018, 19:22:19 »
по редактору GEMS - я не сдался. мне нужен будет для моего хака все равно, так что сделаю сделаю... когданибудь... хотя shell говорит типа нафиг надо и все такое, дескать он досовский научил петь через досбокс и можно типа творить в нем. но что-то мне показалось там как-то не понятно в этом оригинальном программном обеспечении из 90 годов... хочу сделать такой, где сам понимаю что к чему :) либо дотуркать дефлемасков, чтоб они сделали экспорт в GEMS из своей программы. я им уже скок раз говорил, что то что они делают это тупик. зачем делать редактор для музыки... эээ... просто для музыки. когда можно сделать редактор для музыки, которую можно использовать в играх.

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2498
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
обсуждение конвертерa музыки для Dune MIDI2DUNE [SMD]
« Ответ #98 : 16 Август 2018, 17:57:08 »
видео пришлось снести, так как какая-то зачморенная контора предъявила за авторские права на мультфильм.

в кратце новость такая :) у меня была кривая библиотека товарища ValleyBell, в которой было как минимум 2 косяка. первый с сэмплами: если в сэмпле в начале шла тишина, скажем секунду тишины и потом как заорет ктонить - вот он не проигрывался. "видя" эту тишину в течении 1 или 2 секунд эта библиотека приостанавливала проигрывание. методом научного тыка я вроде это убрал... а вот второй косяк был эпически сложный и с моим то церковно приходским образованием найти было не реально. но тут пришел товарищ r57shell и помог найти и скурить этот долбанный косяк. в общем в этой библиотеке предполагалось, что можно запустить не одно, а несколько ядер чипа YM2612. одно то играло нормально и я его использовал, а при включении двух и более - происходило завышение частоты проигрывания и звук становился писклявее.

для чего это было нужно: GEMS хитрый, скатина... при наличии 6 физических каналов - он имеет 16 чтоль дорожек. естественно что 16 звуков одновременно он не родит, но ведь песня совсем не обязательно должна фигачить аккордами, верно? то есть GEMS распихивает ноты мелодии, проверяя - а не свободен ли канал номер 1? если свободен - сует туда ноту и играет. если занят - проверяет 2 канал и так далее. реализовать подобное мне было бы тяжеловато... посему и возникла такая идея, чтобы заместить это динамическое перераспределение - физическим увеличением каналов :) то есть использовать 3 ядра или 3 чипа YM2612. в результате теперь редактор будет проигрывать мелодии GEMS более полифонично, нежели оно играло ранее - жалкие обрезки из 6 дорожек, когда в песне могло быть и 10 и 15.

конечно для самой сборки это никак не скажется, даже наоборот я бы сказал несколько вредно, так как в редакторе мелодия, при ручном её ковырянии - будет звучать лучше, чем в итоге на приставке через GEMS аудио драйвер - типа если пользователь переборщит с одновременно играющими нотами в своих каналах, но все равно я доволен как слон. теперь мелодии можно прослушивать более полно :) там правда рассинхроны, корявые модуляции, неправильная работа с volume, не работающие аккорды в одной дорожке и отсутствие loops - никуда не делись и досих пор портят впечатление :) но все равно теперь лучше, чем было раньше.
« Последнее редактирование: 16 Август 2018, 21:34:34 от SeregaZ »

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2498
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
о конвертации миди:


Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2498
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
пытаясь перенести как можно близко звучание дефлемаска в GEMS все время натыкаюсь на тупики. и таких тупиков уже накапливается прилично. думаю надо их записать наконец в кучу.

1. лимит количества модуляций и инструментов в их банках. я думал там 255. ибо 1 байт... но видимо там реально байт .b тип. то есть от -127 до 127. то есть 127 штук. пока предполагается что решаться эта проблема будет увеличением количества самих банков GEMS. как типа Мортал Комбат 3 например - там два комплекта банков GEMS. но вроде как можно больше. то есть предполагается 1 песня - 1 банк GEMS.

тут ведь как - если песенка простая и без наворотов, то может и хватит одного набора с лимитом по 127 штук для всех песен игры... но так получилось, что у нас совсем без тормозов композитор :) он использует возможности Дефлемаска на всю катушку. вот например одна из его любимых вещей - использование стерео. если для RRR драйвера это не проблема - тыркай флаг левый, правый, стерео и все дела, то для GEMS это целая история - ведь флаг в какой колонке данной дорожке играть зашит в самом инструменте. выходит если песня использовала где-то для каких-то инструментов этот эффект, то надо умножать все эти "стерео" инструменты на 3. то есть отдельно инструмент с левым включенным каналом, отдельно с правым и отдельно с обоими. а сейчас еще докучи мы выяснили что для организации еще там какого-то эффекта - вибрато чтоль - можно еще менять параметр AMS или FMS... ему то легко сказать что он нужен - тыркнул в дефлемаске и вбил какой эффект нужен. а у меня мозг взрывается. если прикручивать изменение этого параметра, то количество инструментов опять таки увеличится. а если еще и учитывать эту стерео чехарду, то увеличится в разы. было бы хорошо, если в GEMS можно было бы изменить тип параметра с однобайтового .b на двух байтовый .u (от 0 до 65 тысяч), либо на худой конец на .w (от минус 30 тыщ до плюс 30 тыщ сколько-то там)

2. в связи с указанными выше сложностями - было бы хорошо добавить в GEMS команды для управления этих самых параметров AMS или FMS и переключение стерео канала. по примеру как работает команда громкости. хотя пример не очень, ибо громкость 1 параметр. пиши новую громкость и проблем нет. а вот в случае с со стерео и этим вибрато - этот параметр содержит в себе флаги других параметров. выходит надо "помнить" оригинальное значение, а после вписывать в него нужные биты и только потом слать в регистр.

3. в одной из, находящихся в разработке, песен есть мой самый любимый момент в конце. ну и сконвертировался он не верно. сегодня засел за выискивание причины... и расстроился. рассказываю с самого начала: есть в дефлемаске эффект 03. типа идет нота С (до) а потом нота С# (до диез) и вот она идет с указанием эффекта 03. это означает, что нота С играет как обычная нота, а когда доходит до начала проигрывания ноты С# - то прекращения проигрывания ноты С не происходит. она продолжает играть, просто начинает перетекать слайдом в ноту С# с какой-то скоростью, указанной в параметре этого эффекта 03. и это еще может быть совсем не конец, а потом может быть, скажем, третья нота, четвертая... и так до посинения, как музыкант решит. я проклял все на свете рожая алгоритм, который бы все это учитывал. достал всех, кто плюс минус в этой теме. опросил всех своих консультантов... ну с горем пополам родил, и ходил довольный пару дней. до сегодняшнего дня, пока не начал разбираться почему в конце той песни вылез затык. так вот этот эффект 03 для RRR не представляет никакой проблемы - так как там есть своя встроенная команда в драйвере. для GEMS же было два пути воспроизведения этого эффекта - создания модуляции - последовательность инструкций по изменению частоты ноты во времени или же бомбить дорожку песни кучей команд pitch, через какие-то промежутки. вот я значит делал первый вариант, через создание модуляций. и причина оказалась в том, что драйвер GEMS оказывается совсем не расчитан на большое количество событий в этом файле модуляции. там лимит всего в 10 вариантов. на 11 модуляция тупо зависает. я понятия не имел, что там есть лимит. но скорей всего это не лимит в 10 событий - это скорей всего баг драйвера, так как в оригинальном программном обеспечении GEMS для модуляции предусмотрено как минимум 20 событий. после 20 там просто уже не реагирует кнопка добавления сегментов. то есть нужна починка этого момента в драйвере, а лучше бы увеличение лимита как минимум до 40. а лучше бы до посинения. но я понятия не имею какие там ограничения. по идее раз оно так упирается в этот лимит 10 - там видимо заранее предустановлен массив из 10 ячеек, куда вносятся данные. может быть он 10 потому что лимит памяти, а может просто чтоб быстрей драйвер работал - я не знаю. но хотелось бы чтоб оно было как минимум 40 - самое большое значение, какое встретилось в тех разрабатываемых песнях.

можно конечно переделать систему с модуляций на спам команд pitch в самой дорожке песни, но размер песни раздуется до космических высот и памяти может не хватить. а вторая проблема - математика. рожая математику для 03 эффекта - я чуть не умер, а переделывать математику под такой вариант точно помру к черту. я так радовался эффекту затухания громкости или наоборот нарастания - который получилось реализовать и просчитать это было сложно, то эта переделка испортит все уже отлаженное. прям расстройство в общем.
« Последнее редактирование: 28 Июнь 2019, 02:36:20 от SeregaZ »

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2498
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
итак, как выяснилось этот самый злосчастный GEMS, имеет буфер для модуляций. и всего 128 байт. это причем на все модуляции, а предусмотрено что этих самых модуляций может быть 4 штуки максимум одновременно. то есть итого 128 / 4 = 32. а 32 байта это, напомню, 2 байта стартовый питч, 1 байт счетчик, 2 байта скорость .w типа, то есть от минус тридцать тыщь сколько то до плюс трыдцать тыщ сколько то. то есть 32 байта это как раз 10 сегментов - и вот она причина глюка. эх... там бы чуток пустого места в памяти и можно было бы увеличить этот самый буфер и хотелось бы до 128 байт для каждой из четырех модуляций, итого 512 байт... но увы.

значит придется рожать систему со спамом команд pitch. так не хочется портить уже отлаженный код конвертера  :'(

думаю на днях засяду. в итоге обычные эффекты дефлемаск 01, 02, Е1, Е2 оставлю как есть. а вот для 03 эффектов будет проверятся сколько памяти это будет занимать. если в пределах 32 байт - оставлять модуляцию. и причем возможно что 29 байт, а не 32. ибо нужно еще будет исследовать как поведет себя модуляция с 10 сегментами, но фактически без последнего нуля - то есть конца модуляции. возможно там вылезет глюк. посему это возможно 29 байт лимит будет. так вот а если больше, то бомбить командами pitch. так-же если это был сложный случай, то есть начинался каким-то из эффектов 01, 02, Е1, Е2, но потом бац и перетек в 03. там тоже смотреть размер и если превышает - перерисовывать всё командами pitch. но уже голова начинает болеть... ведь надо будет предусмотреть еще и громкость, а именно когда эта самая громкость может изменятся посередине звучания ноты. вобщем все плохо :)

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2498
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
музыканты... начинаю вас ненавидеть :) для программиста, после всех этих танцев с бубном, стало звучать ааааафигенно! но музыканту подавай эффект вибрато. ибо вся песня натыкана этими... вибраторами... в принципе это не сложно. получается эффект болтается от текущей ноты плюс минус одну ноту с какой-то скоростью. но использование модуляции сразу отпадает, потому как там явно не будет влезать в этот самый лимит 32 байт... значит команды pitch. а это опять таки увеличение размера памяти для мелодии, что может не хватить. но главное это второй негативный момент - самый отвратный, то как указано на скрине в самом вверху, там где я ною и развожу сопли, что дефлемаск хочет меня окончательно добить - стартует эффект E1, то есть нота уже куда-то начинает перетекать от изначальной, в середине ноты стартует вибрато (04 эффект), потом включается перетекание в другую ноту (эффект 03). ааааааааааа... я тогда плевался, а сейчас и вовсе отказываюсь об этом думать. даже от только обдумывания уже голова болит, то уж тут говорить про реализацию... но думаю если эффект 04 будет попадаться вместе со стартом ноты, то думаю можно будет сделать. так сказать хотя бы частичную поддержку эффекта вибрато. наверное засяду на неделе за этот допил.

еще он спрашивал про какое-то там детуне. в смысле так то я знаю что это один из параметров инструмента, но по видимому он переключается каким-то из эффектов в дефлемаске. проблема то в чем - в GEMS нет такого переключателя. этот параметр переключается в самом инструменте. получается что если мне надо изменить этот самый детун, то надо клонировать инструмент, менять этот параметр и использовать уже этот новый инструмент для этого фрагмента. на словах то все понятно и можно сделать... однако такое клонирование инструментов у меня уже есть - на эффекте 08, а это эффект переключение стерео канала. типа хочешь в левой колонке играть будет, хочешь в правой... и я уже тогда был не в восторге от этой идеи, когда увеличивается количество используемых инструментов. их по всей видимости 127, хотя я думал что хотя-бы 255. (а именно 127 - это потому что пустые слоты в досовском софте GEMS для инструментов подготовлены именно в количестве 127 и причем это под все инструменты всего GEMS банка, то есть всех песен). и тогда, учитывая эти детуны, а их там 7 штук помница, плюс еще на каждый вариант по 3 инструмента стерео, левый и правый - ааааааааа... это никакого лимита не хватит даже на одну песню. поймать бы этих праграмистоф сраных, что GEMS ваяли, так как обматерить что все эти вещи не предусмотрели...

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2498
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
обсуждение конвертерa музыки для Dune MIDI2DUNE [SMD]
« Ответ #103 : 11 Декабрь 2019, 21:37:26 »
понадобилось приложить к форуму конвертер... посему апаю свою тему :) вобщем теперь конвертер стал еще череззаднепроходный. если раньше из миди в гемс конвертировало, то теперь сначала из миди в дефлемаск, после что-то там можно было поправить, и только потом уже из дефлемаска в гемс.

выбирать при конвертировании из миди в дефлемаск систему 32. потому как конвертер из дефлемаска в гемс заточен именно под 32. 128 система конечно круче, но конвертирование там хуже. посему 32.

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2498
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
оказалось банки какой-то из буржуев тоже выковыривал для своих каких-то дел :) посему обновляю базу теми играми, которых не было. это еще не все. архив еще полистаю что там есть, чего здесь нет. напоминаю скачивать их не нужно. они будут в списке редактора для однокликового вставливания в игру. сам лист, к сожалению, пока вшит в программу... хостинг я так и не завел, чтобы этот список обновлялся онлайново. ну пока так. причем там в списках есть для 32х системы, а не только мега драйва.

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2498
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
обсуждение конвертерa музыки для Dune MIDI2DUNE [SMD]
« Ответ #105 : 04 Апрель 2020, 01:03:44 »
пока-что последние какие у меня есть. в планах правда еще аркадный рестлинг и мк3 надо чуть переделать, чтобы два комплекта банков уместить в один и правильно распаковать. сейчас в базе мк3 несколько обрезанный.
« Последнее редактирование: 08 Апрель 2020, 06:26:01 от SeregaZ »

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2498
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
обсуждение конвертерa музыки для Dune MIDI2DUNE [SMD]
« Ответ #106 : 27 Сентябрь 2021, 08:25:09 »
несмотря что вроде как с вами больше не играю, но база то онлайновая здесь лежит. а тут чот втемяшилось МК3 обновить. раньше был только один банк с переразжатыми сэмплами из DPCM 4bit в PCM 8bit. сейчас сэмплы опять так-же расжаты в 8бит для совместимости с другими GEMS играми, ноооо наконец-то дотулил туда второй банк. начиная со 128 номера это слоты второго банка.
« Последнее редактирование: 27 Сентябрь 2021, 08:38:36 от SeregaZ »

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2498
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
обсуждение конвертерa музыки для Dune MIDI2DUNE [SMD]
« Ответ #107 : 28 Сентябрь 2021, 09:30:39 »
ну и тада чтоб два раза не ходить - WWF рестлинг аркаде как его там... по той-же схеме. оба банка, начиная со 125 слота, плюс разжатые сэмплы в 8 бит для совместимости.

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2498
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
обсуждение конвертерa музыки для Dune MIDI2DUNE [SMD]
« Ответ #108 : 12 Апрель 2022, 17:57:30 »
на случай если дети сами не смогут - надо залить для онлайн базы.

Оффлайн Razor

  • Пользователь
  • Сообщений: 1781
  • Пол: Мужской
  • Gotta Go Fast!
    • ВКонтакте
    • Youtube
    • Просмотр профиля
обсуждение конвертерa музыки для Dune MIDI2DUNE [SMD]
« Ответ #109 : 19 Апрель 2022, 11:12:02 »
Для онлайн базы теперь ещё надо из прототипа Дюнки добавить треки :)

https://hiddenpalace.org/Dune:_The_Battle_for_Arrakis_(prototype)

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2498
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
обсуждение конвертерa музыки для Dune MIDI2DUNE [SMD]
« Ответ #110 : 19 Апрель 2022, 12:20:47 »
эм... мне пустую страницу показывает. предлагает её заполнить. ссыль на ром я не вижу. это первое. а второе - ты уверен что в прототипе тоже был GEMS? а то может там какой другой движок...

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

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2498
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
обсуждение конвертерa музыки для Dune MIDI2DUNE [SMD]
« Ответ #111 : 19 Апрель 2022, 12:33:17 »
звук соника нравится больше, чем в релизной версии.

Оффлайн Razor

  • Пользователь
  • Сообщений: 1781
  • Пол: Мужской
  • Gotta Go Fast!
    • ВКонтакте
    • Youtube
    • Просмотр профиля
обсуждение конвертерa музыки для Dune MIDI2DUNE [SMD]
« Ответ #112 : 19 Апрель 2022, 19:27:10 »
Запихал к себе в Razor Missions музыку из прототипа ради истории  ;)

Оффлайн Turbo2000

  • Пользователь
  • Сообщений: 102
  • Пол: Мужской
    • Просмотр профиля
обсуждение конвертерa музыки для Dune MIDI2DUNE [SMD]
« Ответ #113 : 02 Апрель 2023, 17:16:01 »
Привет, а онлайн базу каким образом формировали?
Есть исходные коды или библиотеки для получения GEMS, понимаю, что уже все извлечено, но было бы интересно покопаться.

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2498
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
обсуждение конвертерa музыки для Dune MIDI2DUNE [SMD]
« Ответ #114 : 03 Апрель 2023, 21:53:08 »
основная статья о драйвере звука GEMS: http://elektropage.ru/publ/o_prekrasnom/articles/gems_sound_driver/2-1-0-71
конечно без деталей, но в общем понятно что там творится.

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

сам искать эти банки не умею - я ж не ромхакер :) пользовался тремя путями.
1. под сполером гражданина Megaplex указаны множество игр с адресами. оставалось их вытащить из игры и скормить шелловскому комбайну-сплиттеру для распаковки. http://elektropage.ru/forum/7-68-3#2624
2. товарищ ValleyBell сделал GEMSScanner - он бывает находит и вытаскивает из игр банки, но много где ничего не находит.
3. есть ссыль на архив My GEMS Rips... но ссыль я потерял :(((( там буржуйский товарищ выложил банки GEMS кучей к куче игр. причем даже различных билдов одной и той-же игры. видимо тут: https://hcs64.com/mboard/forum.php?showthread=43020

понятно что некоторые игры имеют не стандартный драйвер и на обычной козе там не подъехать. как то МК3 например. но в общем и целом основная часть игр распаковывается вполне себе.

это что касается банков самих, а их распаковка - деление на нотные листы, сэмплы, модуляции и инструменты - там можно пойти по обратному пути. то есть посмотреть что распаковывает шелловский комбайн-сплиттер - то есть создает именно что отдельные копии сэмплов, инструментов и так далее - и смотреть как они расположены внутри банка. типа инструмент FM 39 байт чтоль... вот смотрим, скажем 00 инструмент, копируем его данные и ищем в банке инструментов. а потом уже делаем выводы как система его находит - то есть в заголовке типа там смещения указаны и все такое, и только потом уже эти самые 39 байт инструмента... и так далее и тому подобное. с нотным листом конечно посложнее, но в той первоначальной статье на электропейдже все в принципе понятно расписано.

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

Добавлено позже:
напишу ответ здесь, а не в личке.

с самим кодом эмуляторов чипов ямахи и псж - я без малейшего понятия как эта магия происходит. я не понимаю как этот самый звук формируется :) мне помогли. ямаха - была opn.dll библиотека, сделанная буржуйским товарищем ValleyBell, она правда содержала ошибки, которые смог найти и поправить r57shell и вообще использовалась для какой-то ValleyBell'ной программы... я использовал не по назначению. PSG часть код давал для веб браузера тоже легендарный товарищ Shiru. а этот код в свою очередь потом на форуме моего языка программирования конвертировал буржуйский товарищ wilbert, но и то он использовал частично asm, который мой PureBasic поддерживает, и в результате я там, даже видя код - нихрена не понимаю что происходит. может чистый PB было бы более понятно, но работает и то хорошо. и это были лишь эмуляторы звуковых чипов. сама организация проигрывания делалась мной, но только по мотивам драйвера... приблизительно как это должно работать. понятно что криво-косо, но это было лучше, чем вообще никак. далее у товарища ValleyBell была замечательная программа GEMSPlay, которая в свою очередь была написана по мотивам SMPSPlay другого автора... не суть. она была в качестве консольной программы и могла проигрывать банки GEMS на винде. для моей задачи она не очень подходила... но зато там был открытый исходный код, который здесь на форуме товарищ Sharpnull переписал на свой язык, опять таки понаходил кучу ошибок и поправил, а еще сделал не как консольную - а как dll, которую можно подключить к своей программе. там уже изначально вшиты и оба чипа ямаха и псж, и сам драйвер. получается мне оставалось только формировать GEMS банки, посылать их как образы памяти в библиотеку и она начинала играть. и тут максимально приближено к оригиналу как на приставке бы оно играло. и это куда круче моей глючной самоделки.

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

по ямахе - о регистрах чипа. то есть какие регистры за что отвечают и как заставить их петь: http://www.smspower.org/maxim/Documents/YM2612

по PSG не помню была ли подобная подробная статья... но я на что-то ориентировался. точно помню. кажется эта: https://www.smspower.org/Development/SN76489

Добавлено позже:
про эту библиотеку: https://github.com/infval/GEMSPlay

про формирование банков GEMS, с описанием в картинках структуры банков: https://github.com/SeregaZ2004/GEMSReader
« Последнее редактирование: 04 Апрель 2023, 00:11:31 от SeregaZ »

Оффлайн Turbo2000

  • Пользователь
  • Сообщений: 102
  • Пол: Мужской
    • Просмотр профиля
обсуждение конвертерa музыки для Dune MIDI2DUNE [SMD]
« Ответ #115 : 04 Апрель 2023, 02:16:49 »
Огромное спасибо за развернутый ответ  ^_^

Оффлайн Turbo2000

  • Пользователь
  • Сообщений: 102
  • Пол: Мужской
    • Просмотр профиля
обсуждение конвертерa музыки для Dune MIDI2DUNE [SMD]
« Ответ #116 : 04 Апрель 2023, 19:05:44 »
Сергей, здравствуйте!
Вы не знаете, корректно ли работает конвертер Gems в Midi?
Или не существует такого конвертера, который может учесть все команды, интересует только статическая музыка (в смысле, не интересуют динамические смены темпа и так далее).

Оффлайн SeregaZ

  • Пользователь
  • Сообщений: 2498
  • Пол: Мужской
  • ливнул с форума
    • Youtube
    • Просмотр профиля
обсуждение конвертерa музыки для Dune MIDI2DUNE [SMD]
« Ответ #117 : 04 Апрель 2023, 20:42:50 »
без понятия о чем речь. vgm 2 midi вроде бы есть... что-то я такое припоминаю ValleyBell делал. а вот с драйвером наврядли кто-то заморачивался, чтоб его в миди переводить. проблема то в чем: длины дорожек в GEMS могут быть разные, а в миди нет - только одинаковые. типа скажем для барабанов в GEMS записали 4 такта, а в конце влепили зацикливание и эта дорожка так и будет проигрывать эти 4 такта, прыгая назад и проигрывая сначала. а дорожка 2 может быть скажем 100 тактов играть, дорожка 3 - 50 тактов... миди же подавай чтоб все дорожки были одинаковой длины. в этом плане vgm файлы с мелодиями дюны или любой другой игры - более приближены к миди, так как все дорожки там пишутся одинаковой длины.

Оффлайн Turbo2000

  • Пользователь
  • Сообщений: 102
  • Пол: Мужской
    • Просмотр профиля
обсуждение конвертерa музыки для Dune MIDI2DUNE [SMD]
« Ответ #118 : 04 Апрель 2023, 22:36:19 »
без понятия о чем речь. vgm 2 midi вроде бы есть... что-то я такое припоминаю ValleyBell делал. а вот с драйвером наврядли кто-то заморачивался, чтоб его в миди переводить. проблема то в чем: длины дорожек в GEMS могут быть разные, а в миди нет - только одинаковые. типа скажем для барабанов в GEMS записали 4 такта, а в конце влепили зацикливание и эта дорожка так и будет проигрывать эти 4 такта, прыгая назад и проигрывая сначала. а дорожка 2 может быть скажем 100 тактов играть, дорожка 3 - 50 тактов... миди же подавай чтоб все дорожки были одинаковой длины. в этом плане vgm файлы с мелодиями дюны или любой другой игры - более приближены к миди, так как все дорожки там пишутся одинаковой длины.

Отлично, спасибо за объяснения, в общем все подводные в том, что там дорожки разной длины + лупы.

Оффлайн Turbo2000

  • Пользователь
  • Сообщений: 102
  • Пол: Мужской
    • Просмотр профиля
обсуждение конвертерa музыки для Dune MIDI2DUNE [SMD]
« Ответ #119 : 23 Апрель 2023, 13:57:06 »
Привет, если кому-нибудь надо, то переделал немного API, теперь можно одновременно играть несколько GEMS дорожек.

GEMSPlaySystem_PlayMusic(0x3);

SDL_PauseAudio(0);
is_playing = true;

/* wait until we're don't playing */
while (is_playing)
{
SDL_Delay(100);

SDL_Delay(rand() % 1000 + 3000);

for (int i = 0; i < sound_channels; ++i)
{
GEMSPlaySystem_PlaySound(35 + i, i);
SDL_Delay(100);
}
}

Теперь не зависит от потока под воспроизведение аудио, и возможно, от windows, надо проверять.
const size_t samples_count = len / 4;
GEMSPlaySystem_UpdateMusic(reinterpret_cast<unsigned short*>(buffer), samples_count);

for (int sound_channel = 0; sound_channel < sound_channels; ++sound_channel)
{
GEMSPlaySystem_UpdateSound(sound_channel, reinterpret_cast<unsigned short*>(sound_buffer), samples_count);

for (int sample_index = 0; sample_index < samples_count * 4; ++sample_index)
{
buffer[sample_index] += sound_buffer[sample_index] / 2;
}
}