
Сообщение от
parallelno
Написал простенький двух канальный плеер, и сталкнулся с проблемой поиска/создания звуковых эффектов. Подстажите плиз где обычно создаются звуковые эффекты для ретро платформ. Может быть есть какие-то бесплатные тулзы которые позполяют контертировать готовые семплы? Или можеь быть есть где-то паки с готовыми звуками для игр для AY чипа?
Возможно, это не то, вопрос про AY. Я для роботов сделал SFX на 8253, AY оставил для музыки.
К Вектору можно на самом деле подключить Sound Tracker и R-Sound, но, думаю это редкий случай в RL. Хотя мне сдаётся, ivagor по-моему такое делал для меня на DE1.
На таймере всего либо 3 уровня громкости, либо 3 канала. Просто набил сэмплы используя макро-средства m80. Получился некий ad-hoc язык.
Каждый сэмпл имеет заголовок,
Пример сэмпла №32 из роботов: запуск лифта
Код:
; Elevator start
IFNDEF _PATLIB
ASEG
.PHASE 0
INCLUDE A:HDRSFX.INC
INCLUDE B:SFX.INC
EndIF
PATHDR <CH32_0,CH32_1>
CH32_0: DB 0
Attack 20,15000,1,-30
Vibrato 15,14000,15000,1,1,-600,-40
Vibrato 30,4000,4000,1,1,-70,-25
Vibrato 30,1300,3000,1,1,20,100
Vibrato 25,2400,5000,1,1,200,180
EndCh
CH32_1: DB 1
Vibrato 10,15000,14500,1,1,-100,-50
Pause 144
Vibrato 25,2400,5000,1,1,200,60
EndCh
Отдельные ноты тоже можно вставлять. Скажем, открывание двери выглядит так (тут 3 канала):
Код:
; Door 3 open SFX
IFNDEF _PATLIB
ASEG
.PHASE 0
INCLUDE A:HDRSFX.INC
INCLUDE B:SFX.INC
EndIF
PATHDR <CH13_0,CH13_1,CH13_2>
CH13_0: DB 0
Vibrato 8,Hz050,Hz100,2,1,1500
Vibrato 14,Hz050,Hz100,2,3,-1500,1000
EndCh
CH13_1: DB 1
pause 2
Vibrato 50,80,3500,1,1,20,500
EndCh
CH13_2: DB 2
pause 6
note 3219,2
note 6438,2
pause 7
note 4551,5
pause 8
note 3219,1
note 1609,1
note 3219,1
pause 8
note 5734,6
pause 10
note 6438,3
pause 3
note 4551,3
pause 11
Vibrato 4,9102,4551,1,1
EndCh
PATHDR вначале описывает, сколько сэмплу нужно каналов. Драйвер использует каналы динамически. Сколько есть свободных (если предыдущий patch играет), столько и запустит на проигрывание. Отдельный сэмпл можно скомпилить и проиграть утилитой playsfx (в аттаче).
Все сэмплы компилятся в файл sfxlib (sfxlib.mac в аттаче) и кидаются в один из банков квазидиска. При загрузке файла, роботы настраивают слинкованные смещения начала сэмплов в sfxlib добавляя смещения по которым лежат сэмплы. Драйверу просто асинхронно говорится по прерыванию типа играй сэмпл 32, и он играет на свободных каналах тем же кодом что playsfx.
Это-упрощённо. Там есть свои гитики. И это-не AY.