MIDI信號的解碼及實時音符顯示
發(fā)布時間:2008/6/3 0:00:00 訪問次數:1078
    
    
    來源:電子技術應用 作者:矯 健
    
    摘要:介紹了midi數據的格式,討論了一種使用at89c51系列單片機完成midi信號的實時解碼,從中提高音符數據,并隨時利用專用led驅動芯片將音符顯示出來的設計方案。該方案經實際產品應用,證明合理可靠。
    
    關鍵詞:midi 串行接口 led顯示
    
    midi是音樂設備數字接口的簡答,是各種電子音樂設備之間數據傳輸的標準接口,廣泛應用于各種電子樂器上,目前較高檔的電子琴子均帶有midi接口。筆者在開發(fā)用于音樂教學的產品“音樂電教板”的過程中,遇到了有關midi信號解碼的問題,產品要求能夠接受電子琴傳送來的midi信號,并將相應的音符顯示出來。經過對midi協議的研究,用at89c51單片機和128段led顯示控制芯片bc7281構成的系統完成了設計要求。
    
    
    1 midi信號簡介及與單片機的接口
    
    midi信號的傳輸采用異步串行方式,其速率為31.5kbps,數據格式為8個數據位、1個起始位和1個停止位。因此,完全可以采用mcs51單片機內部的硬件uart串口完成midi信號的接收和發(fā)送(本設計中只用到其接收部分),在硬件方面只需采取適當的電路進行電平轉換即可。
    
    midi接口采用標準的5芯din連接器,如圖1。傳送電纜使用屏蔽層的雙絞線電纜,因為信號的傳輸利用的是電流信號而不是電壓信號,所以其抗干擾能力比較強,盡管其速率高達31.5kbps,傳輸距離仍可以達到15m,比常見的rs-232接口的傳送距離要遠。一般的midi接收電路如圖2,本文采用與之相同的電路。
    
    其中rx接單片機的串口rx端,電路中的光耦既起到隔離的作用,又有電平轉換的作用,因為速率較高,必須選用開關速度較高的型號,這里使用的是6n136。d1是保護二極管。
    
    midi中共有16個通道(channel),一般稱之為通道1至通道16,每個通道相當于樂曲中的個聲部,使用者可以為每個通道指定一種音色。音色可以是midi規(guī)范中規(guī)定的128種音色中的任何一種,每一個通道只能有一種音色。也就是說,在一個標準的midi系統中,最多相當于可以有16種樂器同時演奏。
    
    按照midi協議的規(guī)定,傳送的數據可以分為兩類:狀態(tài)字節(jié)和數據字節(jié)。所謂狀態(tài)字節(jié)實際就是命令字,表明其后所跟數據的種類,狀態(tài)字節(jié)總是大于等于80h,而數據字節(jié)總是小于80h,因此,可以很容易地區(qū)分狀態(tài)字節(jié)和數據字節(jié)。在狀態(tài)字節(jié)中,用數據的低4位表示通道號,高4位表示不同的命令。比如,設定音色為chh指令,其中n是通道號。
    
    在各種midi的指令中,與本機有關的只有兩種:8nh和9nh(n為通道號),兩種指令的基本格式一樣,一般由3個字節(jié)組成,格式是:
    
    8n(9n) aa bb
    
    其中,aa是音符數據,表明所演奏的音符,其范圍為0~7fh,這樣共有128個音符,足以覆蓋整個音域;bb是速度數據,表明擊鍵的速度,又稱力度數據,其范圍也是0~7fh。
    
    
    第一個字節(jié)是狀態(tài)字節(jié)(指令),其具體含義說明如下:
    
    8nh——“音符關”指令,在多數midm設備中,該指令中的速度數據bb被忽略。
    
    9nh——“音符開”指令,如果速度數據等于0,則等同于8nh指令。在本機中,因為只需要顯示音符的開關,而不必考慮其聲音的大小,故速度數據被忽略(速度數據不等于0時)。
    
    midi中有一個特殊的通道即通道10,通道10是節(jié)奏樂器的專用通道,與其它通道不同,其它通道中不同的音符表示不同的音高,而在通道1中,不同音符表示不同的節(jié)奏樂器,因為節(jié)奏樂器是沒有音高的,一般如各種鼓等,在本機中,所要顯示的是各種旋律的音符,因此,通道10的數據要過濾掉。
    
    2 顯示
    
    
    來源:電子技術應用 作者:矯 健
    
    摘要:介紹了midi數據的格式,討論了一種使用at89c51系列單片機完成midi信號的實時解碼,從中提高音符數據,并隨時利用專用led驅動芯片將音符顯示出來的設計方案。該方案經實際產品應用,證明合理可靠。
    
    關鍵詞:midi 串行接口 led顯示
    
    midi是音樂設備數字接口的簡答,是各種電子音樂設備之間數據傳輸的標準接口,廣泛應用于各種電子樂器上,目前較高檔的電子琴子均帶有midi接口。筆者在開發(fā)用于音樂教學的產品“音樂電教板”的過程中,遇到了有關midi信號解碼的問題,產品要求能夠接受電子琴傳送來的midi信號,并將相應的音符顯示出來。經過對midi協議的研究,用at89c51單片機和128段led顯示控制芯片bc7281構成的系統完成了設計要求。
    
    
    1 midi信號簡介及與單片機的接口
    
    midi信號的傳輸采用異步串行方式,其速率為31.5kbps,數據格式為8個數據位、1個起始位和1個停止位。因此,完全可以采用mcs51單片機內部的硬件uart串口完成midi信號的接收和發(fā)送(本設計中只用到其接收部分),在硬件方面只需采取適當的電路進行電平轉換即可。
    
    midi接口采用標準的5芯din連接器,如圖1。傳送電纜使用屏蔽層的雙絞線電纜,因為信號的傳輸利用的是電流信號而不是電壓信號,所以其抗干擾能力比較強,盡管其速率高達31.5kbps,傳輸距離仍可以達到15m,比常見的rs-232接口的傳送距離要遠。一般的midi接收電路如圖2,本文采用與之相同的電路。
    
    其中rx接單片機的串口rx端,電路中的光耦既起到隔離的作用,又有電平轉換的作用,因為速率較高,必須選用開關速度較高的型號,這里使用的是6n136。d1是保護二極管。
    
    midi中共有16個通道(channel),一般稱之為通道1至通道16,每個通道相當于樂曲中的個聲部,使用者可以為每個通道指定一種音色。音色可以是midi規(guī)范中規(guī)定的128種音色中的任何一種,每一個通道只能有一種音色。也就是說,在一個標準的midi系統中,最多相當于可以有16種樂器同時演奏。
    
    按照midi協議的規(guī)定,傳送的數據可以分為兩類:狀態(tài)字節(jié)和數據字節(jié)。所謂狀態(tài)字節(jié)實際就是命令字,表明其后所跟數據的種類,狀態(tài)字節(jié)總是大于等于80h,而數據字節(jié)總是小于80h,因此,可以很容易地區(qū)分狀態(tài)字節(jié)和數據字節(jié)。在狀態(tài)字節(jié)中,用數據的低4位表示通道號,高4位表示不同的命令。比如,設定音色為chh指令,其中n是通道號。
    
    在各種midi的指令中,與本機有關的只有兩種:8nh和9nh(n為通道號),兩種指令的基本格式一樣,一般由3個字節(jié)組成,格式是:
    
    8n(9n) aa bb
    
    其中,aa是音符數據,表明所演奏的音符,其范圍為0~7fh,這樣共有128個音符,足以覆蓋整個音域;bb是速度數據,表明擊鍵的速度,又稱力度數據,其范圍也是0~7fh。
    
    
    第一個字節(jié)是狀態(tài)字節(jié)(指令),其具體含義說明如下:
    
    8nh——“音符關”指令,在多數midm設備中,該指令中的速度數據bb被忽略。
    
    9nh——“音符開”指令,如果速度數據等于0,則等同于8nh指令。在本機中,因為只需要顯示音符的開關,而不必考慮其聲音的大小,故速度數據被忽略(速度數據不等于0時)。
    
    midi中有一個特殊的通道即通道10,通道10是節(jié)奏樂器的專用通道,與其它通道不同,其它通道中不同的音符表示不同的音高,而在通道1中,不同音符表示不同的節(jié)奏樂器,因為節(jié)奏樂器是沒有音高的,一般如各種鼓等,在本機中,所要顯示的是各種旋律的音符,因此,通道10的數據要過濾掉。
    
    2 顯示
上一篇:逆變電源的消諧控制技術