PROTRACKER372 AYFIX H
From MSX MUSIC WIKI
AYFIX C��m��� г;Эта программа демонстрирует, сколько
- разных звуков можно получить на одной
- и той же комбинации tone+env, варьируя
- фазу тональника
- крутите фазу кнопками O,P!
ORG #6000
- обнуляем все регистры AY
LD DE,#E00 DEC D CALL OUTAY JR NZ,$-4
LLL
HALT LD DE,#7FF CALL OUTAY ;запрещаем тональник LD DE,#800 CALL OUTAY ;запрещаем огибающую
- тишина
CALL 8020 ;BREAK RET NC
- регулируем фазу (см.ниже)
LD HL,WAIT LD A,#DF IN A,(-2) RRA JR C,$+3 INC (HL) RRA JR C,$+3 DEC (HL)
- показываем фазу на экране
LD B,(HL) LD HL,#5800 LD (HL),255 INC L DJNZ $-3 JR Z,$+7 LD (HL),0 INC L JR NZ,$-3
- обнуляем частоту тональника
LD DE,#000 CALL OUTAY LD DE,#100 CALL OUTAY
- теперь счетчик тональника в фиксированном положении
- флаг тональника в одном из 2 положений
- "вкл" или "выкл"
LD HL,#3C*8 ;период тональника LD D,#0 LD E,L CALL OUTAY ;устанавливаем (мл.) LD D,#1 LD E,H CALL OUTAY ;устанавливаем (ст.)
- делаем задержку для сдвига фазы тональника
WAIT=$+1
LD B,1
WAIT0 LD A,8
DEC A JR NZ,$-1 DJNZ WAIT0
- теперь тональник в выбранной нами фазе F
- но из-за непредсказуемости флага эта фаза может быть F+180°
LD DE,#7FE CALL OUTAY ;разрешаем тональник LD DE,#810 CALL OUTAY ;разрешаем огибающую LD DE,#B1E CALL OUTAY ;устанавливаем период огибающей LD DE,#D0E CALL OUTAY ;уст.тип огибающей (E)
- теперь огибающая в начальной фазе.
- слушаем...
LD B,3 HALT DJNZ $-1
JR LLL
OUTAY
LD BC,#FFFD OUT (C),D LD B,#BF OUT (C),E RET
L8df4=$-2 module=#C000 END
ELSE
END module
INCBIN "si*.m" ENDIF ORG tab_frq ;INCBIN "tb_ST DD F80E10