Мир звуков Спектрума - глава 4.3: Программирование звуковых эффектов - Управление тембром.

ZX Forum #04

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