ZX Forum
#04
19 ноября 1997 |
|
Мир звуков Спектрума - глава 4.7: Обработка внешних сигналов - Реверберация.
4.7. Реверберация Говоря человеческим языком, ревербера- ция - это эхо. Программа, реализующая этот интересный эффект, по существу является воссоедине- нием обоих фрагментов первого типа из пре- дыдущей главы. То есть, эта программа од- новременно воспроизводит звук и записы- вает на его место новый. Вот она: 1415. 10 DI ; запрет прерываний 20 LOOP1 LD HL,25000 ; HL=адрес буфера 30 LD DE,2560 ; DE=задержка эха 40 LOOP2 LD B,8 ; B=счетчик битов 50 LOOP3 XOR A ; A=цвет бордюра (0) 60 RRC (HL) ; скроллинг данных через флаг CY 70 JR NC,NOOUT ; если CY=0, то перейти на NOOUT 80 OR 16 ; установка бита D4 регистра A 90 NOOUT OUT (254),A ; вывод A в порт 254 100 RES 7,(HL) ; сброс бита D7 в памяти 110 XOR A ; A=0 (опрос всей клавиатуры) 120 IN A,(254) ; ввод значения из порта 254 130 BIT 6,A ; проверить бит магнитофона 140 JR Z,NOINP ; если 0, то перейти на NOINP 150 SET 7,(HL) ; установить бит D7 в памяти 160 NOINP CPL ; клавиша 170 AND 31 ; нажата ? 180 JR NZ,EXIT ; если да, то перейти на EXIT 190 LD C,2 ; C=задержка 200 PAUSE DEC C ; C=C-1 210 JR NZ,PAUSE ; если C<>0, то цикл 220 DJNZ LOOP3 ; продолжить цикл обработки байта 230 INC HL ; HL=HL+1 240 DEC DE ; DE=DE-1 250 LD A,D ; DE= 260 OR E ; 0 ? 270 JR NZ,LOOP2 ; если нет, то перейти на LOOP2 280 JR LOOP1 ; перейти на LOOP1 290 EXIT EI ; разрешение прерываний 300 RET ; возврат 2 Эта подпрограмма будет работать до тех пор, пока Вы не нажмете какую-либо клави- шу. А так как она очень чувствительна к подобного рода действиям, вызывать ее луч- ше с помощью маленькой программки на бей- сике: 10 FOR I=1 TO 10: NEXT I 20 RANDOMIZE USR A где A - адрес подпрограммы ревербератора. Если Вы хотите, чтобы независимо от местоположения подпрограммы буфер находил- ся сразу за ней, то введите следующие строки: 1415. 20 LD HL,BUFFER 310 BUFFER NOP ; здесь располагается буфер 2 В строке 190 содержится значение за- держки между выборками сигнала. Меняя его, Вы можете настраивать соотношение "качес- тво звука - объем памяти". Изменяя значение в строке 30, можно ме- нять задержку эха. И последнее: если Вы будете вводить звук с выхода какого-либо устройства, то эхо будет звучать один раз. Если же с по- мощью микрофона, то Вы можете установить количество повторений, регулируя громкость воспроизводимого звука и уровень записи магнитофона. Если хотя бы один из этих параметров будет ниже необходимого уровня, то эхо прозвучит один раз. Чем выше эти параметры, тем большее число повторений Вы услышите (их громкость будет, как в жиз- ни, от раза к разу уменьшаться). Однако не следует увлекаться. Если Вы переу- сердствуете, то программа самовозбудится и все, что она будет воспроизводить, впос- ледствии будет звучать на фоне ужасно про- тивного шума. Если это произошло, выключи- те громкость или микрофон на несколько се- кунд, и все вернется на свои места.
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября