音乐信号处理探索
2015-10-21王东辉胡艳华
王东辉 胡艳华
一、前言
音乐信号分析和处理中最基本亦即最主要的问题之一是音调检测或跟踪,采用CQT的谱线频率可以和音阶频率具有相同指数分布规律,选用AT89S51单片机,通过T1定时中断,并配合P3.0引脚输出音频频率,从而实现音乐播放和选择。
二、CQT的性能分析
本课题采用CQT的性能作出分析,设音阶频率为则按式(1)计算CQT的第k条谱线所对应的模拟频率fkcq与實际音阶频率fk之间的误差为:
(1-1)
(1-2)
三、单片机实现
1、硬件选取
采用单片机,控制音频产生及led动态显示并处理键盘输入。具体单片机地址分配如下:
P3.0:输出音频。
P3.5~P3.7: 接矩阵键盘的行线。
P3.1、P3.3、P3.4:接矩阵键盘列线。
P1.0~P1.6: 输出接一共阳极的数码管。
P0.0~P0.3:接74LS48,经译码后做4-led的段选码。
P0.4~P0.6: 接74LS138,经译码后做4-led的位选码。
P2.0~P2.7: 接发光二极管,随频率变化闪烁。
2、程序流程图
主程序的内容一般包括:主程序的起始地址,中断服务程序的起始地址,有关内存单元及相关部件的初始化等。主程序清单
ORG 0000H ;
LJMP MAIN ;
ORG 0003H ;
LJMP WAISEV ;
ORG 000BH ;
LJMP T0SEV ;
ORG 001BH ;
LJMP T1SEV ;
ORG 0030H ;
MAIN: MOV SP,#60H ;
MOV TMOD,#11H ;
MOV TH0,#0F4H ;
MOV TL0,#48H
MOV 44H,#70H;44H-47H设置4位LED的位选择码
MOV 45H,#0B0H
MOV 46H,#0D0H
MOV 47H,#0E0H
MOV 32H,#00H;32H为”秒”的二进制数存储单元
MOV 33H,#00H;33H为”分钟”的二进制数存储单
MOV 75H,#00H;75-77H内存单元清零
MOV 76H,#00H
MOV 77H,#00H
SETB EA ;
SETB EX0 ;
SETB ET1 ;
SETB ET0 ;
MOV P3,#0E4H ;
START: MOV 30H,#00H ;30H存音乐编码
L0: JB F0,L1 ;F0为停止标志位
LCALL DISPLAY ;调用序号显示子程序
AJMP L0
L1: MOV A,30H
MOV DPH,75H ;从75H,76H中取DPTR的值
MOV DPL,76H
LCALL DISPLAY
MOVC A,@A+DPTR ;查编码表(one…eight)取编码
MOV R2,A
CJNE A,#00H,NEXT1 ;
MOV 30H,#00H ;
MOV 12H,#00H
MOV 13H,#00H
MOV 14H,#00H
MOV 32H,#00 ;
MOV 33H,#00
CLR TR1 ;关定时器T1,停止播放音乐
SJMP START
NEXT1: MOV A,R2
ANL A,#0FH;取音乐节拍(即编码表低四位)
MOV R5,A ;把节拍的时间存入R5
MOV A,R2
SWAP A
ANL A,#0FH;取音乐音频值(即编码的高四位)
JNZ SING;是否为0,是0则不发音
CLR TR1
SJMP D1;调节拍延时
SING: DEC A
RLC A ;乘以2
MOV 22H,A;音频值存入22H
MOV DPTR,#TABLE ;乐谱编码表
MOVC A,@A+DPTR ;
MOV TH1,A ;
MOV 21H,A ;
MOV A,22H ;再载入取到的音符码
ADD A,#1 ;
MOVC A,@A+DPTR ;
MOV TL1,A ;
MOV 20H,A ;
MOV P2,A ;
SETB ET1
SETB TR1 ;
D1: LCALL DELAY ;
CLR TR1
INC 30H ;取简谱码指针加1
LJMP L0 ;返回主程序开始
四、结束语
根据CQT信号处理,采用单片机,控制音频产生,可以大大减少音乐信号抗干扰处理,而且音乐信号不失真,同时采用查表指令,音乐更换方便,通用性好,被很多电子音乐产品选用。
(作者单位:河南职业技术学院)