ZX Forum
#04
19 ноября 1997 |
|
Мир звуков Спектрума - глава 4.3: Программирование звуковых эффектов - Управление тембром.
4.3. Управление тембром Для управления тембром ZX-Spectrum так же не приспособлен, как и для управления громкостью. Но, как и громкостью, им мож- но управлять в небольших пределах. Как Вы уже знаете, тембр зависит от формы звуковой волны. Так как приспосо- бить для формирования тембра подпрограмму управления громкостью не так-то просто, при создании различных форм волны придет- ся обходиться только двумя уровнями гром- кости. Сделать это можно, например, с по- мощью такой подпрограммы: 1415. 10 DI ; запрет прерываний 20 LOOP1 LD B,8 ; B=темп 30 LOOP2 XOR A ; A=цвет бордюра (0) 40 RLC E ; скроллинг тембра через флаг CY 1415. 50 JR NC,NOSIGN ; если флаг CY=0, то перейти на NOSIGN 60 OR 16 ; установка бита D4 регистра A 70 NOSIGN OUT (254),A ; вывод A в порт 254 80 LD D,H ; D=задержка 90 PAUSE DEC D ; D=D-1 100 JR NZ,PAUSE ; если D<>0, то цикл 110 DJNZ LOOP2 ; цикл темпа 120 LD A,H ; A=H 130 ADD A,L ; прибавить L к A 140 LD H,A ; H=A 150 DEC C ; C=C-1 160 JR NZ,LOOP1 ; если C<>0, то цикл 170 EI ; разрешение прерываний 180 RET ; возврат 2 Перед вызовом этой подпрограммы необхо- димо в регистр C занести длительность но- ты, в регистр H - частоту, в регистр L - смещение частоты (возможны отрицательные значения и ноль), а в регистр E - тембр. Учтите, что не все значения регистра E имеют смысл. Так, при значении E равном 255 или 0 Вы вообще ничего не услышите, а тембры 1 и 128 будут звучать абсолютно одинаково и т.д. По существу, имеет смысл использовать только следующие 19 тембров: 1,3,5,7,9,11, 13,15,17,19,21,23,25,27,37,43,45,51 и 85. Все остальные значения на слух воспринима- ются аналогично этим. Приведенная программа является только примером. Вы вполне можете написать свою, воспроизводящую звук с 16-ти битовым тем- бром, или с тембром, заранее записанным в память с магнитофонного входа (см. главу 4.6).
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября