видимо надо переименовать тему в "Нытье горе-разработчика"
на днях мне дико понравились две песни в дефлемаске. настолько дико, что захотелось их конвертануть в GEMS. в итоге размер моих хотелок увеличился и стал вообще километровым:
midi2gems
vgm2gems
gems tracker
deflemask2gems
как оказалось этот самый дефлемаск конвертить куда проще, нежели vgm. хотя конечно тоже свои подводные камни имеются. например bpm - хрен его знает как он расчитывается. вручную ляпать разве что... впрочем в vgm тоже нет понятия bpm.
так-же вручную пришлось делать создание инструмента PSG. автоматику я все не представляю как родить. и помимо автоматики есть еще камни - а именно в сраном дефлемаске понятие PSG инструмент это массив громкостей, где например плавно громкость снижается. в GEMS инструменте там хоть инструкции - планы как эта громкость должна снижаться, а здесь же просто громкости и думай сам... блин... затык то здесь в чем: в GEMS есть момент, когда ты клавишу отпустил и есть инструкции как громкость себя поведет. плавно затухнет или обрубится моментально. в дефлемаске просто скажем 5 громкостей и все на этом. нота может быть мелкой, а может там три целых ноты по длительности. юзеры ленивые - в файлах дефлемаска не лепят OFF команды... итак дескать сойдет. и как это втолковать гемсу? и как самому раздуплить? вот сейчас конвертит - сплошное хрипение 4 шумового канала PSG. песню ничерта не слышно
потому что там длительность должна быть видимо как минимальная нота. тыц тыц тыц по тарелке. но там-же есть долгий тарелочный удар. что теперь это тоже вручную переделывать? хоца то чтоб однокликово :'(
другой, аналогичный эпический затык - эффекты ноты. слайды, вибраты, затухания, и прочее прочее прочее. GEMS может слайды - есть у него модуляция. а вот игра с громкостью там целая история. а этих эффектов в дефлемаске куча.
еще один затык: в дефлемаске при использовании специального режима 3 канала можно разбить этот самый 3 канал на 4 плохоньких независимых и пиликать в каждом свою партию. типа полифония... кааааак это втолковать гемсу?
)) да никак. в гемсе одна команда keyon. не получится воспроизвести эту фиговину из дефлемаска. вручную выкидывать 3 дорожки разве что и обрабатывать только первую.
посему пишу тебе, товарищ, который по глупости решит пойти по моим стопам, создавая эти конветеры - бросай это гиблое дело пока не поздно! спрашивать не у кого, а сам дефлемаск кривой добезобразия. и форум там тухлый. по людски то как делать - если пишешь в спецификации, что в файле дефлемаска для сеги может быть 02 или 12 - то и должно быть $02 или $12. но когда там $42... когда создаешь эффект включения проигрывания сэмплов $1701 - то надо делать условие, что вводить его можно только в 6 канале FM, а не где попало и при этом дефлемаск будет слушаться этого гдепопального эффекта. когда создаешь инструменты - создавай по человечески. иначе инструмент номер 1 и им можно играть в 1 канале PSG, а захотел этот же номер присобачил к 4 каналу. но это же ясен пень, что разные инструменты должны быть. почему сраный дефлемаск не делает ограничение? соберусь с гугл транслейтером и напишу проклятия на форуме дефлемаска... хотя бестолку. ведь форум там дохлый. но уж больно много этих самых проклятий у меня накопилось за эти дни.
для правильного конвертера нужно:
1. библиотеку-эмулятор YM2612 + точно такую-же, но для SN76489, в которые шлешь по таймеру регистры, а они поют. чтоб на лету слышать как будут звучать те или иные инструменты и ноты.
2. нужен ром GEMS проигрыватель шелла для тестирования итоговых результатов. (хотя там еще под вопросом проблема с командой громкости для PSG) и нужен ромхак этого рома, чтобы можно было стартовать мелодию сразу при запуске рома - экономит время
казалось бы мелочь, но после пары сотен перепроверок и отладок начинает надоедать обязательное тырканье старта ноты.
3. нужно уметь читать GYM логи, записанные в эмуляторах. а лучше сделать парсер и смотреть наглядно как во времени изменяются регистры. очень полезно в отладке. там видно как ведут себя громкости для PSG при тех или иных значениях параметров в инструментах. видно как ведет себя частота ноты при модуляциях - слайдах в мелодиях.
4. нужна bass.dll и её производные миксер и енкодер чтоль... дополнительные библиотеки для создания системы конветрации различных по частоте PCM сэмплов. в vgm нет понятия частота сэмпла. я там велосипед изобрел по расчету частоты. и частота эта может быть весьма разнообразная. а нам надо четкий ступенчатый формат от 10.4k для топового качества и до 5k сколько-то там. всего 5 ступеней. так-же дефлемаск там с десяток вариантов по частоте сэмпла может быть. все это дело надо будет конвертировать до 10.4k. не говоря уже про отдельный импорт какого-то самодельного сэмпла из аудиоредактора.
5. нужно знать спецификацию midi, vgm и дефлемаска. насчет vgm music maker'а не очень уверен а есть ли там комьюнити музыкантов, делающих музыку на нем до сих пор? просто инструменты для него не очень подходят для GEMS - там многие параметры отсутствуют. дефлемаск то вроде еще обновляется. vgm mm - уже нет. давнооо забросил его товарищ Shiru
6. для midi2gems - нужны инструменты с худо бедно подобным по звучанию с мидишными инструментами на компьютере. тут поможет досовская GEMS утилита, так как там есть небольшой пак инструментов. надо только рассортировать. второй путь - собирать каверы музыкантов на популярные игры, которые они пишут в миди. а после просто брать инструменты из соответствющих песен игр и сопоставлять с теми, какие музыканты выбирали в миди для этой песни. инструменты из дефлемаска в принципе тоже подойдут.
7. нужно понимание как эти самые инструменты устроены. для чего в FM всякие detune, attack... так-же понимание того, как построены инструменты PSG в GEMS. понимание как работает модуляция в GEMS.
8. поскольку с bpm проблема как в VGM так и в дефлемаске - тут бы помог алгоритм из диджейских программ, которые автоматически определяют это самое количество ударов в минуту в песнях. как это делается - хрен его знает
но этот механизм очень бы помог при конвертации с правильным определением bpm.
проходить этот путь мне было интересно
правдами и неправдами выуживаешь информацию, по крупицам складываешь в мозаику. с улыбкой вспоминаю как решал проблему с PSG. как формируется звук - я не имею нималейшего понятия
смотрел всевозможные исходники... но видел фигу. и тут на форуме моего недоязыка попадается пример с генератором тонов - задача уж очень похожая. товарищи-буржуи были в мягком шоке, когда я засунул в этот генератор тонов таймер и по этому таймеру долбил значения частот из какой-то игры - из vgm файла, где была записана как раз песня для PSG. в левом канале играла одна дорожка песни, в правом другая
)) зато, увидя сей перфоманс, попался хороший буржуйский товарищ, который разбирается в этом звуковом вопросе. и когда поймал в сети Shiru и выпытывал у него все про PSG и когда получил код для флешки для браузера с этим ядром чипа - как раз таки этот буржуйский товарищ полностью и переделывал этот код под наш язык. получилась просто замечательная библиотека
можно включить два ядра, балансы каналов левый правый - вышло еще круче, чем у Shiru в оригинале было
вторая библиотека ym2612 - тоже в принципе была использована мною не по назначению... а давший её другой буржуйский товарищ, хоть и помог оооооочень сильно с пониманием как работает GEMS, а так-же регистры, DPCM и тд и тп - все равно на него очень сильно обиделся
ну не понимаю я эти всякие музыкальные фиговины... я ж менеджер! а не программист
- очень хотел чтоб он подсказал где в этой его библиотеке ошибка - а именно при активации 2 чипа: оба играют с завышенными частотами - а мне уж очень надо 2 этих самых чипа. воспроизвести гемсовское динамическое перераспределение занятости 6 каналов чипа FM - мне сложновато. я хотел проигрывать первые 6 дорожек в распакованной GEMS песне - то есть дорожки в CODE файле - на первом чипе, а с 7 по 12 на втором. в этом случае динамическое распределение не нужно, а играть будет мелодию более полно
это был бы выход из ситуации малой кровью... но "ой, я деловая колбаса, мне некогда. это старая библиотека. я её больше не поддерживаю. бла бла бла бла бла..." ох и крепко я на него обиделся. надо то опытным глазом посмотреть где косяк и все. мож знак умножить не в том месте елки палки... уж очень хотелось мне, чтоб проигрывало CODE файлы у меня более близко к оригиналу
статья шелла по GEMS хорошая. с неё, так сказать, все началось... но сдается мне там некоторые неточности
хорошо бы написать небольшой "патч" к его статье с пояснениями некоторых мутных мест
пойду напялю пижаму - ибо холодрыга, включу какихнить там автомахинаторов и спать. завтра буду думать как с этим PSG воевать. сегодня уже ничего в голову не приходит. и еще слайды - эффекты из дефлемаска. и видимо надо будет еще редактор модуляции замострячить... а то редактор FM и PSG инструментов есть, редактор сэмплов есть - а модуляции нету
не порядок. а еще я GYM парсер сегодня маленько доделывал. поскольку для PGS регистр всегда один и тот-же - $FF - а все команды скрываются в параметре, который шлется в этот самый регистр - то сделал более наглядную расшифровку, чтоб было видно что здесь выставляется нота, а здесь выставляется громкость - сам ненарадуюсь как здорово получилось
для отладки самый цвет! и надо бы еще GEMS архивы еще 80 игр дозалить на форум. итого там 180 по моему в итоге распакованных
онлайн GEMS база была афигенской идеей
в перспективе помимо Дюны этой базой можно будет пользоваться и для других GEMS игр. а еще хоца раздел кастом-конвертации, где были бы удачно конвертированные мелодии из vgm, дефлемаска или midi.
***
обещанные GEMS архивы для редактора.