MIDI信号的解码及实时音符显示
发布时间:2008/6/3 0:00:00 访问次数:1076
    
    
    来源:电子技术应用 作者:矫 健
    
    摘要:介绍了midi数据的格式,讨论了一种使用at89c51系列单片机完成midi信号的实时解码,从中提高音符数据,并随时利用专用led驱动芯片将音符显示出来的设计方案。该方案经实际产品应用,证明合理可靠。
    
    关键词:midi 串行接口 led显示
    
    midi是音乐设备数字接口的简答,是各种电子音乐设备之间数据传输的标准接口,广泛应用于各种电子乐器上,目前较高档的电子琴子均带有midi接口。笔者在开发用于音乐教学的产品“音乐电教板”的过程中,遇到了有关midi信号解码的问题,产品要求能够接受电子琴传送来的midi信号,并将相应的音符显示出来。经过对midi协议的研究,用at89c51单片机和128段led显示控制芯片bc7281构成的系统完成了设计要求。
    
    
    1 midi信号简介及与单片机的接口
    
    midi信号的传输采用异步串行方式,其速率为31.5kbps,数据格式为8个数据位、1个起始位和1个停止位。因此,完全可以采用mcs51单片机内部的硬件uart串口完成midi信号的接收和发送(本设计中只用到其接收部分),在硬件方面只需采取适当的电路进行电平转换即可。
    
    midi接口采用标准的5芯din连接器,如图1。传送电缆使用屏蔽层的双绞线电缆,因为信号的传输利用的是电流信号而不是电压信号,所以其抗干扰能力比较强,尽管其速率高达31.5kbps,传输距离仍可以达到15m,比常见的rs-232接口的传送距离要远。一般的midi接收电路如图2,本文采用与之相同的电路。
    
    其中rx接单片机的串口rx端,电路中的光耦既起到隔离的作用,又有电平转换的作用,因为速率较高,必须选用开关速度较高的型号,这里使用的是6n136。d1是保护二极管。
    
    midi中共有16个通道(channel),一般称之为通道1至通道16,每个通道相当于乐曲中的个声部,使用者可以为每个通道指定一种音色。音色可以是midi规范中规定的128种音色中的任何一种,每一个通道只能有一种音色。也就是说,在一个标准的midi系统中,最多相当于可以有16种乐器同时演奏。
    
    按照midi协议的规定,传送的数据可以分为两类:状态字节和数据字节。所谓状态字节实际就是命令字,表明其后所跟数据的种类,状态字节总是大于等于80h,而数据字节总是小于80h,因此,可以很容易地区分状态字节和数据字节。在状态字节中,用数据的低4位表示通道号,高4位表示不同的命令。比如,设定音色为chh指令,其中n是通道号。
    
    在各种midi的指令中,与本机有关的只有两种:8nh和9nh(n为通道号),两种指令的基本格式一样,一般由3个字节组成,格式是:
    
    8n(9n) aa bb
    
    其中,aa是音符数据,表明所演奏的音符,其范围为0~7fh,这样共有128个音符,足以覆盖整个音域;bb是速度数据,表明击键的速度,又称力度数据,其范围也是0~7fh。
    
    
    第一个字节是状态字节(指令),其具体含义说明如下:
    
    8nh——“音符关”指令,在多数midm设备中,该指令中的速度数据bb被忽略。
    
    9nh——“音符开”指令,如果速度数据等于0,则等同于8nh指令。在本机中,因为只需要显示音符的开关,而不必考虑其声音的大小,故速度数据被忽略(速度数据不等于0时)。
    
    midi中有一个特殊的通道即通道10,通道10是节奏乐器的专用通道,与其它通道不同,其它通道中不同的音符表示不同的音高,而在通道1中,不同音符表示不同的节奏乐器,因为节奏乐器是没有音高的,一般如各种鼓等,在本机中,所要显示的是各种旋律的音符,因此,通道10的数据要过滤掉。
    
    2 显示
    
    
    来源:电子技术应用 作者:矫 健
    
    摘要:介绍了midi数据的格式,讨论了一种使用at89c51系列单片机完成midi信号的实时解码,从中提高音符数据,并随时利用专用led驱动芯片将音符显示出来的设计方案。该方案经实际产品应用,证明合理可靠。
    
    关键词:midi 串行接口 led显示
    
    midi是音乐设备数字接口的简答,是各种电子音乐设备之间数据传输的标准接口,广泛应用于各种电子乐器上,目前较高档的电子琴子均带有midi接口。笔者在开发用于音乐教学的产品“音乐电教板”的过程中,遇到了有关midi信号解码的问题,产品要求能够接受电子琴传送来的midi信号,并将相应的音符显示出来。经过对midi协议的研究,用at89c51单片机和128段led显示控制芯片bc7281构成的系统完成了设计要求。
    
    
    1 midi信号简介及与单片机的接口
    
    midi信号的传输采用异步串行方式,其速率为31.5kbps,数据格式为8个数据位、1个起始位和1个停止位。因此,完全可以采用mcs51单片机内部的硬件uart串口完成midi信号的接收和发送(本设计中只用到其接收部分),在硬件方面只需采取适当的电路进行电平转换即可。
    
    midi接口采用标准的5芯din连接器,如图1。传送电缆使用屏蔽层的双绞线电缆,因为信号的传输利用的是电流信号而不是电压信号,所以其抗干扰能力比较强,尽管其速率高达31.5kbps,传输距离仍可以达到15m,比常见的rs-232接口的传送距离要远。一般的midi接收电路如图2,本文采用与之相同的电路。
    
    其中rx接单片机的串口rx端,电路中的光耦既起到隔离的作用,又有电平转换的作用,因为速率较高,必须选用开关速度较高的型号,这里使用的是6n136。d1是保护二极管。
    
    midi中共有16个通道(channel),一般称之为通道1至通道16,每个通道相当于乐曲中的个声部,使用者可以为每个通道指定一种音色。音色可以是midi规范中规定的128种音色中的任何一种,每一个通道只能有一种音色。也就是说,在一个标准的midi系统中,最多相当于可以有16种乐器同时演奏。
    
    按照midi协议的规定,传送的数据可以分为两类:状态字节和数据字节。所谓状态字节实际就是命令字,表明其后所跟数据的种类,状态字节总是大于等于80h,而数据字节总是小于80h,因此,可以很容易地区分状态字节和数据字节。在状态字节中,用数据的低4位表示通道号,高4位表示不同的命令。比如,设定音色为chh指令,其中n是通道号。
    
    在各种midi的指令中,与本机有关的只有两种:8nh和9nh(n为通道号),两种指令的基本格式一样,一般由3个字节组成,格式是:
    
    8n(9n) aa bb
    
    其中,aa是音符数据,表明所演奏的音符,其范围为0~7fh,这样共有128个音符,足以覆盖整个音域;bb是速度数据,表明击键的速度,又称力度数据,其范围也是0~7fh。
    
    
    第一个字节是状态字节(指令),其具体含义说明如下:
    
    8nh——“音符关”指令,在多数midm设备中,该指令中的速度数据bb被忽略。
    
    9nh——“音符开”指令,如果速度数据等于0,则等同于8nh指令。在本机中,因为只需要显示音符的开关,而不必考虑其声音的大小,故速度数据被忽略(速度数据不等于0时)。
    
    midi中有一个特殊的通道即通道10,通道10是节奏乐器的专用通道,与其它通道不同,其它通道中不同的音符表示不同的音高,而在通道1中,不同音符表示不同的节奏乐器,因为节奏乐器是没有音高的,一般如各种鼓等,在本机中,所要显示的是各种旋律的音符,因此,通道10的数据要过滤掉。
    
    2 显示
上一篇:逆变电源的消谐控制技术