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).