|
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).
Другие статьи номера:
Похожие статьи:
В этот день... 1 января
SibNews #08,
Woot! #01,
Spectrum Magazine #01,
ACNews #25,
Psychoz #14,
ACNews #14,
Last 128 #08,
Last 128 #06,
Last 128 #05,
Last 128 #04,
Last 128 #03,
Last 128 #02,
Last 128 #09,
Last 128 #3.5,
Last 128 #8.025,
Sinclair Club #05,
Last 128 #M!R 01,
Fantadrom #01,
Buzz #20,
Last 128 #01,
DonNews #13,
Nicron #120,
Promised Land #01,
Inferno #01,
Marazm #25,
Ultimathum #01,
Marazm #21,
Hooy Mag #02,
KrNews #11,
Marazm #22,
Marazm #23,
ZX Football 2000 #01,
Codemania #01,
Always #03,
Bugs #02,
IzhNews #08,
Virtual Worlds #01,
Listok #04,
Scenergy #02,
Flash Info #18,
Marazm #16,
Marazm #17,
Zed #01,
Balagan #02,
ZX Format #08,
ZX Power #03,
Shock #01,
Impulse #02,
Deja Vu #03,
ZX Club #08,
ZX Club #06,
Numberology #01,
Marazm #13,
Marazm #12,
Marazm #14,
Gorodok #02,
Zodiac #01,
Marazm #15,
Deja Vu #07,
Marazm #11,
Deja Vu #07,
Playboy #03,
Crazy News #2,
Crazy News #4,
ZX Light #01,
Crazy News #5,
Playboy #02,
ZX News #03,
ZX Review #1-2,
Read Me #02,
Crazy News #3,
Nicron #13,
Read Me #01,
Public Spirit #01,
Faultless #06,
Faultless #05,
ZX Software #01,
Stump #04,
Speccy #07,
Возраждение #0,
Speccy #03,
On-Line #17,
Scene+ #01,
Welcome Press #01,
ZX Konig #04,
Adventurer #01,
Faultless #05,
Faultless #04,
Di Halt #01,
Faultless #01,
Playboy #01,
Crazy News #1,
Faultless #03,
Pioneer #03,
Sinclair Town #02,
ZX Magazine #01,
Eldorado #01,
ZX Magazine #02,
Spectron #01,
ZX News #01,
ZX Konig #02,
200 #W,
Welcome Press #00,
Dune #07,
Subliminal Extacy #01,
Subliminal Extacy #02,
ZX Konig #01,
Subliminal Extacy #00,
Muchomor #01,
Spectrofon #01,
ZX Revija #02,
Outlet #01,
Outlet #1-3