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

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

#0
21:42, 25 мар 2016

Ковыряюсь тут с игрой выпуска конца 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 бита - номер его канала.

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

#1
23:32, 25 мар 2016

[sound=116012]

+ Показать

Похоже?

#2
2:08, 26 мар 2016

FordPerfect
Похоже на то, что у меня получилось, т.е. не то.
Быстро меняющаяся мелодия которая в фоне должна быть спереди, а медленное вы-ву-вы-ву что спереди должно быть фоном. Плюс ритм отсутствует.

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

#3
2:29, 26 мар 2016

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

#4
10:17, 26 мар 2016

Artlav
Миди уже устарел. Не трать на него время.
Генерируй звуки на FruitLoops или другой программе-синтезатор.
И звуки круче будут.

Я вот своей прогой сгенерил с помощью XAudio2.
[sound=116016]
[sound=116019]
[sound=116020]
[sound=116021]

#5
11:49, 26 мар 2016

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

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

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

#6
23:24, 26 мар 2016

Как оно должно звучать:
http://orbides.org/011_05_ref.mp3

#7
4:37, 27 мар 2016

А откуда ты знаешь, что оно должно именно так звучать?

#8
5:12, 27 мар 2016

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

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

#9
11:57, 27 мар 2016

Artlav

Как оно должно звучать

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


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

+ Показать
ПрограммированиеФорумЗвук

Тема в архиве.