PDA

Просмотр полной версии : Звуки из преисподней: музыка из заставки Demon Stalker.



Jarik65535
20.10.2018, 23:02
Всегда интересовало, как несколько команд может генерировать такие сложные звуки, напоминающие музыку. Вот кусок кода из заставки Demon Stalker:

001046: mov #10000, @#177706
001054: mov #20, @#177712
001062: clr @#177710
001066: mov #3, r1
001072: inc r1
001074: mov #5000, r3
001100: bit r1, @#177710
001104: beq 001124
001106: mov #100, @#177716
001114: mov r1, r2
001116: sob r3, 001100
001120: br 001134
001122: nop
001124: clr @#177716
001130: mov r1, r2
001132: sob r3, 001100
001134: bit #100, @#177716
001142: bne 001072
Изучив код, я реализовал алгоритм на C, результат превзошел все ожидания: стереоэффект, звуки разной амплитуды, полифония, все это через ШИМ и благодаря сложению вычитанию и логическому И. Таймер оказался не нужен.
https://i.imgur.com/FQMQGo8.png
Подбирая значение decrement, можно менять характер "мелодии", а меняя начальное значение COUNT (05000) — темп.
Наверняка это какой-нибудь известный алгоритм из 70-х, однако я больше ни где с ним не сталкивался, если это не так — респект товарищу KV, надеюсь он меня простит.
Результаты работы генератора выложены на youtube:

https://www.youtube.com/watch?v=ULcVe5IEc88
Исходники генератора доступны на github: https://github.com/y-salnikov/ds_sound_sdl

Manwe
22.10.2018, 14:15
Очень круто!

S_V_B
22.10.2018, 14:27
Еще в школе.. тоже пытались процедурную музыку делать.. как раз под впечатлением от демон сталкера..
Вы буквально мысли мои прочли, за несколько дней до этого подумал... как бы было хорошо на УКНЦ какую-нибудь процедурную мелодию для Last mission сделать..
мысль материальна :)

svofski
22.10.2018, 15:13
Очень круто! Я еще с интересом наблюдал над экспериментами viznut-а (знаменитого благодаря Robotic Liberation на VIC20), например
https://www.youtube.com/watch?v=qlrs2Vorw2Y

Adam Bazaroff
29.10.2018, 18:53
Отлично!

Kakos_nonos
30.10.2018, 15:28
Вот, наверное, самый крутой однострочник (Начиная с 5:13)

https://youtu.be/tCRPUv8V22o?t=312

Jarik65535
04.11.2018, 01:13
Это же из демки chaos theory! Круто, конечно, но немного не то, тут полноценные амплитудные значения, а у нас на БК только 1 и 0.