www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式教程
[導(dǎo)讀]嵌入式MIDI文件格式解析設(shè)計(jì)與實(shí)現(xiàn)

摘要:建立在嵌入式系統(tǒng)平臺(tái)上的電子樂(lè)譜閱讀器可以代替?zhèn)鹘y(tǒng)紙質(zhì)樂(lè)譜和譜架的組合成為樂(lè)譜閱讀的理想方式,因此在嵌入式系統(tǒng)上閱讀MIDI等文件格式的數(shù)字樂(lè)譜具有重要的意義。本文詳細(xì)說(shuō)明了從一個(gè)MIDI文件解析出五線譜信息的全過(guò)程,介紹了MIDI文件格式以及在MIDI格式讀取的過(guò)程中遇到的種種問(wèn)題的解決方法。
關(guān)鍵字:MIDI格式解析;五線譜生成;電子樂(lè)譜

1  前言

隨著計(jì)算機(jī)與電子科學(xué)的發(fā)展,傳統(tǒng)的閱讀方式正在發(fā)生著天翻地覆的變化。在音樂(lè)領(lǐng)域,由于紙質(zhì)樂(lè)譜本身具有如不宜保存、查找和攜帶以及翻頁(yè)不便等缺點(diǎn),也促使許多作曲家使用作曲軟件制作音樂(lè),使用打譜軟件來(lái)生成樂(lè)譜;但是,雖然制作音樂(lè)和生成樂(lè)譜的軟件很多,相應(yīng)的閱讀樂(lè)譜的軟硬件設(shè)備卻很少,由于沒(méi)有可行的方法把樂(lè)譜顯示出來(lái),演奏者必須把已數(shù)字化的樂(lè)譜再打印到紙上,這說(shuō)明了在音樂(lè)領(lǐng)域數(shù)字化工作進(jìn)行的并不徹底。

為了可以把現(xiàn)有的音樂(lè)數(shù)字化工作擴(kuò)展到樂(lè)譜的閱讀,又可以克服紙質(zhì)樂(lè)譜本身的缺點(diǎn),設(shè)計(jì)一個(gè)跨平臺(tái)的、便攜的、用戶友好的電子樂(lè)譜閱讀器,利用嵌入式的閱讀系統(tǒng)代替?zhèn)鹘y(tǒng)的紙質(zhì)樂(lè)譜與譜架的組合,無(wú)疑是一個(gè)不錯(cuò)的選擇。

當(dāng)前可以獲得的電子版的樂(lè)譜可以分為兩種,一種是基于圖片格式的,另一種是基于數(shù)字音樂(lè)格式的。前一種主要包括jpg圖,gif圖等圖片格式,以及主要由圖片構(gòu)成的pdf,chm等文檔格式,在此本文不作為重點(diǎn);后一種主要包括MIDI文件格式和一些打譜軟件所使用的專用格式?,F(xiàn)在常用的打譜軟件有很多,但分別屬于不同的公司,使用不同的且非公開的格式,本文將著重介紹如何支持公開與標(biāo)準(zhǔn)化的MIDI文件格式的顯示。

2  系統(tǒng)分析

圖1是一個(gè)簡(jiǎn)單的五線譜的一部分,它具有兩個(gè)聲部,每個(gè)聲部都對(duì)應(yīng)一組五線。五線譜上有各種標(biāo)記,表示出五線譜的各種屬性。

屬性作用的對(duì)象包括:樂(lè)譜、聲部、跨越多聲部的音樂(lè)段落、單聲部的音樂(lè)段落與音符等。而從屬性作用的方法來(lái)看,屬性可以劃分成幾類:有的屬性依靠符號(hào)的水平位置或垂直位置來(lái)體現(xiàn),有的屬性則依靠符號(hào)的形狀變化體現(xiàn)。

某些情況下,同一個(gè)屬性必須一致的出現(xiàn)五線譜的許多不同的地方,例如不同聲部的調(diào)號(hào)和、拍號(hào)在小節(jié)數(shù)相同時(shí)必須也是相同的,并且要分別標(biāo)注在每個(gè)聲部。另外,有些屬性并不直接以符號(hào)的形式表示在譜上,它作用于其他的屬性上,人們可以根據(jù)其他屬性的變化推斷出來(lái)。

為了描述五線譜復(fù)雜的結(jié)構(gòu),同時(shí)考慮到結(jié)構(gòu)的簡(jiǎn)潔性以及把這種數(shù)據(jù)結(jié)構(gòu)繪制到屏幕的便捷性,本文建立了如下幾個(gè)類:Staff類描述一個(gè)五線譜,Track類描述一個(gè)聲部,Measure類描述一個(gè)小節(jié),Notation類是所有符號(hào)的基類,Note、Chord、Noteblock、Rest、Tie分別描述了單個(gè)音符、和弦、音符組、休止符、延音符等符號(hào)。圖2直觀的表述了類間的關(guān)系。

圖2 五線譜數(shù)據(jù)結(jié)構(gòu)組織形式

考慮到五線譜不同聲部的小節(jié)號(hào)相同的小節(jié)具有的許多屬性都是一致的。為了降低冗余度和方便程序調(diào)用,本文為五線譜類設(shè)立了不含有音符的虛擬聲部,來(lái)保存實(shí)際聲部中的公共小節(jié)信息。虛擬聲部中的小節(jié)聲明為VMeasure類,每個(gè)聲部的Measure類都保存指向?qū)?yīng)VMeasure類的指針,方便小節(jié)信息的獲取。圖3顯示了虛擬聲部在五線譜類中的結(jié)構(gòu)。

3  MIDI文件格式解析

樂(lè)器數(shù)字接口MIDI(Musical Instrument Digital Interface)是數(shù)字音樂(lè)國(guó)際的標(biāo)準(zhǔn),定義了計(jì)算機(jī)音樂(lè)程序、合成器及其他電子設(shè)備交換信息和電子信號(hào)的方式,解決不同電子樂(lè)器之間不兼容的問(wèn)題。MIDI文件中包含音符、定時(shí)和多達(dá)16個(gè)通道的演奏定義。文件包括每個(gè)通道的演奏音符信息:鍵通道號(hào)、音長(zhǎng)、音量和力度等。由于MIDI文件是一系列指令,而不是波形,它需要的磁盤空間非常少,此外對(duì)MIDI數(shù)據(jù)的編輯和修改非常靈活,可以方便地增加或刪除某個(gè)音符,或者改變音符的屬性。

3.1 格式說(shuō)明

MIDI文件中的數(shù)據(jù)劃分為若干個(gè)塊(chunk),塊是由塊標(biāo)記、塊長(zhǎng)度和塊數(shù)據(jù)組成的。其中塊標(biāo)記為4個(gè)字節(jié)的ACSII碼,塊長(zhǎng)度為4個(gè)字節(jié)的數(shù)值,表示塊數(shù)據(jù)域的長(zhǎng)度。如表1所示。

表1 MIDI文件組成

3.2 MIDI文件格式解析模塊的結(jié)構(gòu)與解析流程

由于MIDI文件格式解析模塊需要完成的任務(wù)主要有理解MIDI信息、分析MIDI信息、生成五線譜信息幾大部分,因此可以將MIDI文件解析分作兩大塊。第一塊稱為文件分析器,主要負(fù)責(zé)按順序閱讀MIDI文件,將各數(shù)據(jù)成分分離并分別儲(chǔ)存,完成底層面向文件的數(shù)據(jù)讀入和錯(cuò)誤處理,保證向上層提供完整的正確的排列有序的音符信息。第二塊稱為整合分析器,主要負(fù)責(zé)有選擇的使用文件分析器從MIDI文件中獲得的原始信息,參照一系列的規(guī)則,找出音符之間的組合關(guān)系,生成五線譜的邏輯內(nèi)容。整體結(jié)構(gòu)與處理流程如圖4所示。

3.2.1 文件分析器

頭塊中表明了MIDI文件類型、包含軌道數(shù)和四分音符的時(shí)間增量數(shù)。頭塊的解析相對(duì)簡(jiǎn)單,但其中的文件類型和四分音符時(shí)間增量數(shù)對(duì)解析流程影響很大。

MIDI文件類型不同,MIDI文件內(nèi)部的復(fù)雜度會(huì)有較大差別。不過(guò)MIDI文件的三種類型之間是復(fù)雜度遞增的關(guān)系,而且前一種類型總可以近似的看作后一種類型的特例,所以只要面向最復(fù)雜的類型2做好各種處理,相對(duì)簡(jiǎn)單的類型0和1只要稍作修改即可支持。

MIDI文件中一般把四分音符的時(shí)間增量數(shù)設(shè)置為120,但MIDI文件也支持更改這個(gè)值。由于這種情況在實(shí)際應(yīng)用中比較少見,因此可以通過(guò)統(tǒng)一轉(zhuǎn)換為120的方式,在不影響正確性的前提條件下,降低解析的復(fù)雜度。

MIDI事件的讀取

MIDI消息的種類很豐富,而且沒(méi)有統(tǒng)一的格式,這意味著只能把每一種消息單獨(dú)處理。值得慶幸的是,不是所有的MIDI消息都跟五線譜有關(guān),所以要真正理解的MIDI消息實(shí)際上不是很多。要面對(duì)的最多的消息是音符打開消息(Note-On),它的實(shí)際使用量占了所有消息的總使用量的95%以上。音符關(guān)閉消息(Note-Off)也是必須要處理的,如果不處理這種消息,會(huì)造成漏音(打開的音符沒(méi)有對(duì)應(yīng)的關(guān)閉信號(hào)而一直打開)。

由于MIDI中沒(méi)有音符的概念,因此要通過(guò)將對(duì)應(yīng)的音符開啟和關(guān)閉事件配對(duì)形成一個(gè)音符,稱之為原始音符,之后還需要將音符開始時(shí)間戳和結(jié)束時(shí)間戳轉(zhuǎn)換成音符開始時(shí)間戳和音符持續(xù)長(zhǎng)度。

為了完成上述兩個(gè)任務(wù),使用一個(gè)大數(shù)組緩存16個(gè)通道里的128個(gè)音的狀態(tài)。在接收到音符打開與關(guān)閉消息時(shí)進(jìn)行記錄,并同時(shí)計(jì)算開始時(shí)間與持續(xù)時(shí)間。

Meta事件的讀取

MIDI中的Meta事件中描述的信息在五線譜顯示中基本上都是有用的,有些信息還起著至關(guān)重要的作用。例如很多說(shuō)明性的文字信息,需要直接添加到五線譜和各音軌的屬性中。當(dāng)這些說(shuō)明性信息重復(fù)出現(xiàn)時(shí),可以把兩段信息的文字連起來(lái),作為一條長(zhǎng)的信息出現(xiàn)。

調(diào)號(hào)和拍號(hào)信息是Meta信息中非常關(guān)鍵的兩條。調(diào)號(hào)決定了每個(gè)音符在五線譜上顯示的確切位置及其升降號(hào)標(biāo)志,拍號(hào)決定了小節(jié)的長(zhǎng)度還同時(shí)影響合成音符組的規(guī)則。這些信息都是整合分析器不可缺少的重要信息。

3.2.2 整合分析器

文件分析器只能夠讀出MIDI文件中直接說(shuō)明的音符,如果直接顯示這樣的音符,得到的五線譜將非常難看。整合分析器的任務(wù)就是接收原始音符表與其它如拍號(hào)調(diào)號(hào)等信息進(jìn)行排列重組,生成一個(gè)正確美觀的五線譜。由于要分析的信息非常多,本小節(jié)僅列舉了一些相對(duì)重要的工作。

確定譜號(hào)

Meta信息里只提供了調(diào)號(hào)和拍號(hào)的信息,而同樣重要的譜號(hào)信息卻沒(méi)有提供。由于在整合分析器中的許多工作都要使用譜號(hào)信息,所以對(duì)音符的統(tǒng)計(jì)工作必須在進(jìn)入整合分析器之前就進(jìn)行完畢,即把對(duì)音符的統(tǒng)計(jì)穿插到文件分析器中。

確定譜號(hào)需要統(tǒng)計(jì)音軌中最高和最低音符的音高。得到了這兩個(gè)值后,便可以決定使用低音譜號(hào)和高音譜號(hào)中的一種。如果最高音和最低音相差太多,以至于使用無(wú)論使用低音譜號(hào)還是使用高音譜號(hào)都不能滿足要求,可以考慮將一個(gè)音軌拆成兩條五線顯示。

添加休止符

休止符是五線譜中與音符同樣重要的符號(hào)元素,而在原始音符表中只有實(shí)在的音符而沒(méi)有休止符。休止符是指在一定的時(shí)間范圍內(nèi)音軌上沒(méi)有任何音處于打開狀態(tài),所以只要監(jiān)視文件分析器中的音狀態(tài)矩陣就可以判斷是非存在休止符。

小節(jié)劃分與音符的拆分組合

五線譜中的小節(jié)劃分對(duì)顯示來(lái)說(shuō)具有兩個(gè)作用,方便上下同步聲部樂(lè)譜對(duì)齊和在換行時(shí)保持末端對(duì)齊。由于原始音符可能完全屬于某一個(gè)小節(jié),又或跨越若干個(gè)小節(jié),因此就要把音符拆分成多個(gè)小的音符,并用延音符號(hào)連接他們,或者把一個(gè)小節(jié)中的幾個(gè)音符組合在一起構(gòu)成和弦或者共尾音符組等情況。圖5例舉出了一種比較簡(jiǎn)單的情況,三個(gè)音符被拆分組合成了兩個(gè)和弦。

完成這一部分工作需要將原始音符表轉(zhuǎn)換為有序棧。有序棧的特點(diǎn)保證了雖然每個(gè)音符都有可能被反復(fù)插入,但是它插入的次數(shù)與整體棧規(guī)模無(wú)關(guān),只與音符的復(fù)雜度有關(guān)。在音符復(fù)雜度一定的情況下,每個(gè)棧元素被反復(fù)操作的次數(shù)接近一個(gè)常量,故整體函數(shù)仍停留在nlog(n)級(jí)別,是可以接受的。

為了降低運(yùn)算量,可以利用只含有一個(gè)和弦的共尾音符組和只含有一個(gè)音符的和弦統(tǒng)一各種符號(hào)間的比較,把3x3=9步比較合并為兩步,降低了比較的代價(jià),大大減少了代碼量。另一個(gè)優(yōu)化之處是利用了有序棧,把時(shí)間復(fù)雜度降低到nlog(n)。           

圖6展示了MIDI文件的顯示效果,限于篇幅,本文對(duì)于多連音、倚音,裝飾音等格式解析,在這里不做更詳細(xì)的說(shuō)明了。

4  總結(jié)與展望

本文討論的電子樂(lè)譜閱讀器嵌入式開發(fā)平臺(tái)采用了基于Celeron-M的ECX平臺(tái),顯示模塊采用了Linux平臺(tái)下的QT開發(fā)框架。實(shí)踐證明,本文所討論的解析方法是完全可行的,系統(tǒng)的運(yùn)行速度也是令人滿意的。

隨著計(jì)算機(jī)與嵌入式系統(tǒng)的普及,人們的生活方式正在發(fā)生了巨大的變化,雖然本文提到的嵌入式樂(lè)譜閱讀器還沒(méi)有形成產(chǎn)品,但勢(shì)必取代現(xiàn)有的紙質(zhì)樂(lè)譜。另外,本系統(tǒng)目前只有閱讀功能,還可以增加音樂(lè)播放功能,這樣就可以進(jìn)行五線譜的學(xué)習(xí),對(duì)于正處于學(xué)習(xí)階段的學(xué)生來(lái)說(shuō),是一個(gè)非常好的助手。

本文作者創(chuàng)新點(diǎn):本文所作的研究彌補(bǔ)了樂(lè)譜數(shù)字化的最后一個(gè)環(huán)節(jié)——數(shù)字化閱讀。盡管存在著各種打譜軟件、作曲軟件、播放軟件,但演奏者目前還沒(méi)有一個(gè)適合的閱讀器。本文嘗試將數(shù)字化樂(lè)譜通過(guò)嵌入式閱讀設(shè)備顯示給演奏者,替代傳統(tǒng)笨重的紙質(zhì)樂(lè)譜,極大的減輕了演奏者的負(fù)擔(dān)。同時(shí)由于互聯(lián)網(wǎng)上存在大量的MIDI格式的文件,但五線譜格式的文件很少而且格式不公開,需要配備價(jià)格昂貴的專業(yè)軟件。而本系統(tǒng)可以直接將其轉(zhuǎn)換為五線譜閱讀,為使用者的學(xué)習(xí)工作提供了方便。

參考文獻(xiàn):

[1]袁慧梅,宋宇.基于CPLD的MIDI音樂(lè)播放器的設(shè)計(jì)[J].微計(jì)算機(jī)信息,2006,11:143-145
[2]《基本樂(lè)理》,李重光,高等教育出版社,2000年1月
[3]MIDITrans - A MIDI File Transform Language Roger T.Hartley,1998
[4]Standard MIDI File(SMF) Format ,MIDI Manufacturer's Association,1999
[5]MIDI Specification version1.0, MIDI Manufacturer's Association,1999
[6]General MIDI Level 1, MIDI Manufacturer's Association,1999

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉