Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Помогите расшифровать MIDI-образный звуковой формат

Помогите расшифровать MIDI-образный звуковой формат

Поделиться
ArtlavПостоялецwww25 мар. 201621:42#0
Ковыряюсь тут с игрой выпуска конца 80-х, хочу расшифровать формат её звуков, и не осилил.
Пример файла: http://orbides.org/011_05.zip
Расшифровка по нижеописанному формату:
+ Показать

Что удалось понять:
Файл состоит из событий по 4 байта в длину.

Первые два байта - время события, по 1/4 мс на единицу.
Потом идёт байт с нотой в верхних 6 битах и непонятно чем в нижних двух.
Последний байт - от 0 до 10 в верхних 4 битах, и 0xF в нижнем.

Из игры удалось выковырять таблицу нот:

0x0000, 0x1FC8, 0x1DFE, 0x1C50, 0x1ABA, 0x1939, 0x17CF, 0x1679, 0x1536, 0x1406, 0x12E5, 0x11D6, 0x10D6, 0x0FE4, 0x0EFF, 0x0E28, 
0x0D5C, 0x0C9C, 0x0BE8, 0x0B3C, 0x0A9B, 0x0A02, 0x0972, 0x08EB, 0x086A, 0x07F2, 0x077F, 0x0714, 0x06AE, 0x064E, 0x05F3, 0x059E, 
0x054D, 0x0501, 0x04B9, 0x0475, 0x0435, 0x03F9, 0x03BF, 0x038A, 0x0357, 0x0327, 0x02F9, 0x02CF, 0x02A6, 0x0280, 0x025C, 0x023A, 
0x021A, 0x01FC, 0x01DF, 0x01C5, 0x01AB, 0x0193, 0x017C, 0x0167, 0x0153, 0x0140, 0x012E, 0x011D, 0x010D, 0x00FE, 0x00EF, 0x0003

Нота в файле в частоту переводится по формуле:

k = table[note] *8;
if (k==0) k = 4;
freq = 1193180 / k;

1193180 - Частота таймера PC, если кто не опознал.

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

Кто-нибудь узнаёт такой формат?
Что стоит гуглить? Я искал Adlib (на котором это должно было воспроизводиться), но ничего внятного не нашел, кроме подозрения, что 4 бита - номер его канала.

Помогите пож-ста разобраться.

FordPerfectПостоялецwww25 мар. 201623:32#1
011_05
+ Показать

Похоже?
ArtlavПостоялецwww26 мар. 20162:08#2
FordPerfect
Похоже на то, что у меня получилось, т.е. не то.
Быстро меняющаяся мелодия которая в фоне должна быть спереди, а медленное вы-ву-вы-ву что спереди должно быть фоном. Плюс ритм отсутствует.

Попробую завтра записать оригинальную мелодию из эмулятора.

ZabПостоялецwww26 мар. 20162:29#3
Миди - это не частотная запись. Это именно нотные партии для набора указанных там же инструментов. Одна нота - широкий спектр частот. Сэмплов в файле как правило нет, они в воспроизводящей программе зашиты или вообще в аппаратуре. На разной аппаратуре может звучать очень по разному.
ronnikoЗабаненwww26 мар. 201610:17#4
Artlav
Миди уже устарел. Не трать на него время.
Генерируй звуки на FruitLoops или другой программе-синтезатор.
И звуки круче будут.

Я вот своей прогой сгенерил с помощью XAudio2.
ua
uah-ua
vol
auu1

Правка: 26 мар. 2016 10:19

ArtlavПостоялецwww26 мар. 201611:49#5
Zab
> для набора указанных там же инструментов
Интересно.
Поигрался с js кодом - похоже, что note[2] - это инструмент. По крайней мере играя только 0 получается правильная мелодия, только 1 - правильные ударники, 2 - не очень ясно.
Самое похожее, когда 0 синусом на полную громкость, а 1 - квадратом потише.

Осталось понять что есть что, что за семплы и какой длинны.

ronniko
> Миди уже устарел
Ну дык и речь об игре 89 года.

ArtlavПостоялецwww26 мар. 201623:24#6
Как оно должно звучать:
http://orbides.org/011_05_ref.mp3
WraithПостоялецwww27 мар. 20164:37#7
А откуда ты знаешь, что оно должно именно так звучать?
ZabПостоялецwww27 мар. 20165:12#8
Artlav
> Осталось понять что есть что, что за семплы и какой длинны.
Очень разные сэмплы. Как будет звучать определяет воспроизводящая аппаратура. Трудно найти такую, чтобы воспроизводила одинаково. Эти сэмплы вовсе не обязаны даже быть цифровыми, могут быть аналоговые схемы. Собственно, это изначально был способ управления аналоговым синтезатором.

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

ronnikoЗабаненwww27 мар. 201611:57#9
Artlav
Как оно должно звучать

Послушал звук из поста #6. Какой то шлак, а не музыка. Да и звук инструмента тоже.
И ради этой фигни Artlav ты страдаешь ?


PS: Надо тебя стукнуть тапком, что бы не занимался ерундой :)

+ Показать

Правка: 27 мар. 2016 14:41

/ Форум / Программирование игр / Звук

2001—2017 © GameDev.ru — Разработка игр