freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

樂譜繪制系統(tǒng)的方法研究與實(shí)現(xiàn)畢業(yè)論文(文件)

2025-07-16 17:10 上一頁面

下一頁面
 

【正文】 va代碼對AWT的功很多能進(jìn)行了很大規(guī)模的擴(kuò)充。MVC,即Model View Control的縮寫,它在軟件工程里邊是一種非常常用的設(shè)計(jì)模式,可用來將業(yè)務(wù)邏輯、界面展示和核心控制三者分離開來,達(dá)到將系統(tǒng)分成各個(gè)不同的層面的效果,既可以降低層面與層面之間的耦合性,又可以是我們的開發(fā)模塊化,增強(qiáng)程序的靈活性,便于以后的測試和維護(hù)等工作。視圖:顧名思義,就是顯示圖片文字等數(shù)據(jù),經(jīng)常直接與用戶進(jìn)行交互。 XML技術(shù) XML(Extensible Markup Language,可擴(kuò)展標(biāo)記語言)是由W3C,即World Wide Web聯(lián)盟定義的一種可標(biāo)記的語言。所以說HTML旨在顯示信息,XML旨在傳輸信息。 數(shù)據(jù)綁定和文檔模型 上面這個(gè)XML片段表示了一本書及其屬性。且一個(gè)XML文檔僅有一個(gè)根節(jié)點(diǎn),然后根節(jié)點(diǎn)下面可以自定義許多的子節(jié)點(diǎn),子節(jié)點(diǎn)里面可以有屬性也能包含各種子元素。為了克服MINI在記譜方面存在的局限性,在MusicXML之前還相繼出現(xiàn)了MIFF(Notation Interchange File Format,音樂符號文件交換格式)、SMDL(Standard Musical Document Language,標(biāo)準(zhǔn)音樂文件語言),MIFF是用圖像的形式呈現(xiàn)出數(shù)據(jù),在記譜方式上要比MINI好,但是在層次結(jié)構(gòu)和運(yùn)用上卻比MINI差不少;而SMDL卻過于復(fù)雜,所以一直以來沒有被用于商業(yè)化。Divisions標(biāo)簽則表示一個(gè)四分音符所持續(xù)的時(shí)間,值得注意的是,該元素和note中的duration是相互關(guān)聯(lián)的。note表示這個(gè)音節(jié)的信息。duration表示這個(gè)音調(diào)持續(xù)的時(shí)間,如果上面規(guī)定每個(gè)4分音符是1,所以此時(shí)的duration就是4。那么為何Applet通常被稱為小應(yīng)用程序呢?因?yàn)锳pplet功能都比較單一,它必須依賴于一個(gè)特定的容器存在,這個(gè)容器可以是各種插件,也可以是瀏覽器本身,也可以是本身就支持Applet的移動(dòng)設(shè)備等。Applet還支持Java中很多的組件,比如Swing和AWT這類的GUI圖形繪制庫等。所以本系統(tǒng)在滿足市場上通用的在線樂譜記譜功能之外,還會(huì)額外的為音樂教學(xué)系統(tǒng)添加一些擴(kuò)展功能。由于樂譜作為核心無時(shí)無刻不存在于現(xiàn)代教育系統(tǒng)中的音樂教學(xué),所以某種程度上講,只要是在音樂教學(xué)中所能使用到的技術(shù)問題,那么本系統(tǒng)中都應(yīng)該囊括在內(nèi),比如音樂樂譜的編輯、導(dǎo)出、顯示等。這些視頻使得即使身處異地分身乏術(shù)的人也可以在不落下課程的情況下提供了再教育的機(jī)會(huì),他們可以對之前沒有完全消化的知識點(diǎn)溫故知新,也可以自我調(diào)節(jié)學(xué)習(xí)狀態(tài),不再尷尬的局限于老師的教學(xué)計(jì)劃之中消磨學(xué)習(xí)意志。那么這種弊端要如何解決呢?毫無疑問,如果這時(shí)候采用一種功能強(qiáng)大的在線樂譜編輯軟件,那么問題就迎刃而解了,為什么這么說呢?我們知道在線樂譜可實(shí)現(xiàn)教師對樂譜的在線標(biāo)注和注解,對出錯(cuò)的地方也能及時(shí)更正,不會(huì)出現(xiàn)上傳之后就不能做出修改的尷尬局面,所以這種方式的互動(dòng)性就顯得格外強(qiáng)大。 、可暫停,點(diǎn)擊音符可單獨(dú)發(fā)音,也就是說每個(gè)音符都相當(dāng)于一個(gè)觸發(fā)事件。每當(dāng)用戶在固定的位置點(diǎn)擊鼠標(biāo)時(shí),通過系統(tǒng)內(nèi)部算法就會(huì)在該位置按照樂理規(guī)則生成相應(yīng)音符;而在視圖模式下,用戶可以根據(jù)需求選擇各種音樂符號對象,然后進(jìn)行一系列的人性化操作,比如簡單的拖拽等。不但能允許社會(huì)音樂教育系統(tǒng)的各方面需求,同時(shí)也能滿足大部分音樂愛好者對記譜的要求。 4) 用戶可以增加、刪除或修改譜表。 2) 對樂譜做出相關(guān)文本標(biāo)注和注釋。接下來本次小節(jié)將會(huì)圍繞三個(gè)方面進(jìn)行詳細(xì)介紹:總體框架設(shè)計(jì)、核心架構(gòu)設(shè)計(jì)以及具體的樂譜數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)。另一方面,當(dāng)用戶本身有已經(jīng)編輯保存好的MusicXML格式文件時(shí),可以選擇自行導(dǎo)入到本系統(tǒng)中識別,其中該MusicXML格式文件包括以文本方式和照片形式存在的文件。MusicXML格式文件是存在于目前市場上所有音樂記譜軟件所支持的對樂譜信息進(jìn)行交換的標(biāo)準(zhǔn)格式文件,而尤其值得注意的是,為了加上本系統(tǒng)所持有的特殊屬性信息,本項(xiàng)目開發(fā)小組對MusicXML文件在原有基礎(chǔ)上加以擴(kuò)展,延伸了一些新的特性。所以對于不同的音樂元素需要定義成不同的對象表示,而樂譜的最終形態(tài)就是由不同的UI對象排列拼合而成的。這就是前后臺(tái)數(shù)據(jù)交換的大致流程了。MVC模式是將表示層和邏輯層完全分離開,讓其相互間自然解耦。而事實(shí)是,我們完全沒有必要僅僅為了達(dá)到刷新效果而浪費(fèi)大量的資源。 經(jīng)過以上對比后,本系統(tǒng)最終選擇了UI數(shù)據(jù)與邏輯數(shù)據(jù)相結(jié)合的形式。而實(shí)際上畫板在響應(yīng)系統(tǒng)行為時(shí)不是直接處理的,而是交給相對應(yīng)的組件處理,此時(shí)畫板就相當(dāng)于一個(gè)第三方的中央控制器,它會(huì)委托功能組件進(jìn)行管理。 3. MINI播放器:負(fù)責(zé)樂譜的播放。系統(tǒng)通過邏輯控制器將需求反饋給畫板,然后畫板通過樂譜繪制器調(diào)用相關(guān)負(fù)責(zé)的組件開始繪制工作;而需要導(dǎo)入或?qū)С鑫募r(shí),直接讓畫板調(diào)用XML解析器進(jìn)行解析即可。 樂譜數(shù)據(jù)結(jié)構(gòu)示意圖 由圖可看出,樂譜作為整體存在于樹狀結(jié)構(gòu)的根節(jié)點(diǎn),表示為score,score包含一頁或多頁,每頁又包含多行,每行之中有多個(gè)小節(jié)組,每個(gè)小節(jié)組內(nèi)包含多個(gè)小節(jié),每個(gè)小節(jié)又有兩個(gè)音部,最后每個(gè)音部之中又包含多個(gè)音符。時(shí)長是由振動(dòng)的時(shí)間決定的,振動(dòng)時(shí)間越長,則音越長;音高則由音的頻率決定的,振動(dòng)頻率越高,則音越高,相反則越低。那么什么是拍號呢?舉例來說,2|4,在數(shù)學(xué)中表示的四分之二,在音樂中則表示以四分音符為一拍,每小節(jié)有兩拍。系統(tǒng)內(nèi)的絕大部分音符符號對象都處于UI層和邏輯模型層之中,所以一般來說,這兩個(gè)層應(yīng)該保持相對獨(dú)立,這樣在處理對象操作時(shí)才不會(huì)混亂邏輯關(guān)系,以至發(fā)生誤刪或新增的行為。系統(tǒng)按照從簡到繁,由上到下的設(shè)計(jì)理念,將功能模塊設(shè)計(jì)順序安排如下:繪制管理模塊、符號管理模塊、數(shù)據(jù)I/O模塊、播放管理模塊、邏輯控制模塊和用戶行為管理模塊。但是由于每行包括多個(gè)小節(jié),每個(gè)小節(jié)內(nèi)音符個(gè)數(shù)也不一樣,導(dǎo)致小節(jié)的寬度也不應(yīng)該是靜態(tài)的,而是根據(jù)某種良好的繪制策略,既可以保持行中小節(jié)的長度不變,也要使小節(jié)不顯得太寬松或太擁擠。所以繪制管理模塊也需要一個(gè)排列算法進(jìn)行邏輯判斷。本標(biāo)注不僅針對小節(jié)可以標(biāo)注,對單個(gè)音符同樣支持標(biāo)注功能。 符號管理模塊符號管理模塊負(fù)責(zé)所有與符號對象相關(guān)的多有操作。2) 線條符號:線條符號通常不依賴于特定的某個(gè)音符對象存在,它具有一定的時(shí)間跨度,而且起始和結(jié)束也有相關(guān)標(biāo)識。由于前面提到MusicXML格式在音樂領(lǐng)域?qū)儆诒容^通用的文件格式,也就是說絕大部分音樂記譜軟件都支持其數(shù)據(jù)交換,所以本軟件在未來的發(fā)展也將不會(huì)僅僅止步于本系統(tǒng),它可以將第三方軟件保留的數(shù)據(jù)導(dǎo)入并繪制成五線譜。在該模式下,用戶只能體驗(yàn)播放功能,不能進(jìn)行其他比如樂譜編輯、刪除等操作。1) 音符編輯控制:當(dāng)用戶編輯樂譜,添加新的音符或修改音符之后,系統(tǒng)就會(huì)自動(dòng)判斷小節(jié)內(nèi)的剩余時(shí)長,并為樂譜添加休止符,一旦剩余時(shí)長不足以添加新的符時(shí),系統(tǒng)就不允許用戶進(jìn)行添加了。那么接下來該小節(jié)就會(huì)針對繪制模塊的四個(gè)核心功能作出詳細(xì)講述:繪制策略、排列算法、選擇管理、標(biāo)注管理。 音符繪制示意圖當(dāng)進(jìn)行UI繪制樂譜時(shí),每一小節(jié)內(nèi)讀取的音符對象個(gè)數(shù)是可以確定的,而我們會(huì)給每個(gè)音符對象的寬度設(shè)置固定數(shù)值,這樣每個(gè)小節(jié)的長度就能確定下來,根據(jù)這種思路,依次將每個(gè)小節(jié)按照從左到右的順序橫向排列,直到當(dāng)前行的小節(jié)寬度之和超過行寬,這個(gè)時(shí)候,系統(tǒng)就自動(dòng)把最后一個(gè)小節(jié)放到下一列的首節(jié)位置。但在實(shí)際操作中,小節(jié)內(nèi)的對象其實(shí)遠(yuǎn)遠(yuǎn)不止這兩個(gè),還包括其他的符號,而且這些符號其中很多也會(huì)對音符的疏密和寬度造成影響,并不好把握。 而在繪制的時(shí)候我們也需要這樣一個(gè)類,它應(yīng)該包含繪制某一行所需要的關(guān)鍵參數(shù)。 繪制策略類圖 排列算法 在樂譜的繪制中,音符排列方式必須按照樂理規(guī)則進(jìn)行組合,而不是混亂的[16]。 音符時(shí)序排列示意圖 那么該算法的設(shè)計(jì)思路基本如下:為每個(gè)小節(jié)記錄當(dāng)前的音符累積時(shí)長,其初始值都為0。按次序判斷完每個(gè)小節(jié)后,就進(jìn)去下一個(gè)時(shí)間戳。當(dāng)選中對象時(shí),該對象會(huì)有高亮,再次選中時(shí),則上一次被選中的對象高亮消失,轉(zhuǎn)移到當(dāng)前對象;而當(dāng)用戶直接點(diǎn)擊畫板時(shí),所有對象的高亮狀態(tài)消失。分散式不需要管理者本身創(chuàng)建新的對象,當(dāng)被選擇的對象監(jiān)聽到鼠標(biāo)的點(diǎn)擊事件時(shí),就會(huì)自動(dòng)高亮或取消高亮狀態(tài)。當(dāng)用戶需要某對象高亮?xí)r,該對象就會(huì)自己注冊一個(gè)鼠標(biāo)監(jiān)聽事件,那么自然的,為了達(dá)到這種效果,最好的做法是為其創(chuàng)建一個(gè)接口,所有想要此監(jiān)聽功能的對象都可實(shí)現(xiàn)該接口。圖標(biāo)面板上繪制圖標(biāo),文字編輯區(qū)編輯文字。 符號管理 現(xiàn)在在音樂領(lǐng)域中涉及到的音符表現(xiàn)形式,基本上對小節(jié)時(shí)長不會(huì)有什么影響,而是主要依賴于小節(jié)對象等存在[18]。當(dāng)線條關(guān)聯(lián)的幾個(gè)音符符號處于不同的行中,那么符號會(huì)根據(jù)策略換行。 播放管理 播放模塊是記譜軟件必不可少的功能模塊,它負(fù)責(zé)對繪制成功樂譜文件的播放。3. 調(diào)用方法播放該mini事件。 其實(shí)在實(shí)現(xiàn)播放功能中,還需要將播放進(jìn)度指針和播放的音符移動(dòng)保持一致。它是 系統(tǒng)可以正常運(yùn)行的保障,同時(shí)也是提高代碼健壯性、系統(tǒng)穩(wěn)定性的重要手段。下面對動(dòng)態(tài)測試中的功能測試的詳細(xì)結(jié)果,進(jìn)行展示分析。 功能測試 功能測試涉及到系統(tǒng)的方方面面,所以在細(xì)節(jié)上的描述需要做到盡可能更加詳盡,具體來說就是通過用戶體驗(yàn)來進(jìn)行詳細(xì)記錄。表53 播放、導(dǎo)入導(dǎo)出測試用例用例用戶輸入操作步驟期待結(jié)果結(jié)果開始播放無點(diǎn)擊播放按鈕樂譜播放,發(fā)出聲音通過導(dǎo)出MusicXML文件名1) 選中菜單,點(diǎn)擊導(dǎo)出2) 選擇導(dǎo)出地址,輸入文件名該地址出現(xiàn)以該文件名命名的XML文件通過導(dǎo)入MusicXML無1) 選中菜單,點(diǎn)擊導(dǎo)入2) 選擇導(dǎo)入地址,確定后輸入文件名讀入剛才導(dǎo)入的樂譜文件通過 33 總結(jié)本文針對現(xiàn)在市場上對記譜軟件的具體需求,實(shí)現(xiàn)了一個(gè)功能強(qiáng)大,簡便實(shí)用的在線音樂記譜系統(tǒng)。而作為一款實(shí)用軟件,為了便于未來的業(yè)務(wù)拓展增強(qiáng)日后的維護(hù)性,系統(tǒng)還在Mus。前期工作主要選取比較常用的幾款記譜軟件,對其功能以及用戶體驗(yàn)感進(jìn)行相關(guān)對比,最后制定出一套完整的需求方案和功能設(shè)計(jì)。表51 樂譜基本功能測試表用例用戶輸入操作步驟期待結(jié)果結(jié)果新建樂譜無1) 選擇菜單:新建樂譜2) 點(diǎn)擊確認(rèn)畫板上出現(xiàn)一個(gè)默認(rèn)樂譜通過改變拍號無1) 選擇第一個(gè)小節(jié)2) 點(diǎn)擊拍號,選擇2/4樂譜兩個(gè)聲部的第一小節(jié)均變成2/4拍通過添加音符無1) 點(diǎn)擊面板上的八分符2) 在第一個(gè)小節(jié)內(nèi)點(diǎn)擊按鈕,生成 8 分音符3) 點(diǎn)擊符號面板上 16 分音符4) 在第一個(gè)小節(jié)內(nèi) 8 分音符之后的休止符上點(diǎn)擊,成 16分休止符 樂譜上的第一個(gè)小節(jié)變成了四個(gè)音符,其中一個(gè)8分音符,兩個(gè)16 分音符,一個(gè) 4 分休止符通過添加小節(jié)小節(jié)數(shù)目:“2”1) 選中最后一個(gè)小節(jié)2) 點(diǎn)擊符號面板“小節(jié)”選項(xiàng)卡中的添加小節(jié)3) 修改小節(jié)數(shù)量,設(shè)置為 24) 點(diǎn)擊確定畫板上的小節(jié)組數(shù)量變?yōu)?6通過修改標(biāo)題作者標(biāo)題:“test”作者:“jj”1) 雙擊標(biāo)題,標(biāo)題框處于編輯狀態(tài)2) 在標(biāo)題框中輸入 test3) 雙擊作者,作者框處于編輯狀態(tài)4) 在作者框中輸入 jj標(biāo)題和作者分別變成了test和jj通過以下對音符編輯方面作專門測試。由于本系統(tǒng)面向的對象主要是網(wǎng)頁端,所以對運(yùn)行環(huán)境有基本的要求。靜態(tài)測試主要指開發(fā)過程中的非代碼性測試,比如文檔檢查等;而動(dòng)態(tài)測試則主要針對系統(tǒng)的代碼、功能等進(jìn)行測試。在播放時(shí),每播放完一個(gè)時(shí)間戳,就產(chǎn)生一個(gè)監(jiān)聽事件,播放器收到通知后就會(huì)自動(dòng)調(diào)用畫板將畫板上的進(jìn)度指針向后移動(dòng)一個(gè)時(shí)間戳,達(dá)到同步效果。處在相同Y坐標(biāo)的音符都是在同一時(shí)刻發(fā)生的,所以樂理播放規(guī)則和本系統(tǒng)的排列算法在想要達(dá)到的效果上不謀而合。本系統(tǒng)是通過調(diào)用MINI接口實(shí)現(xiàn)播放功能的,實(shí)現(xiàn)過程如下:1. 將音符中符號對象按照時(shí)間戳進(jìn)行排列。這兩部分相互關(guān)聯(lián),刪除一部分另一部分也會(huì)被消除。 標(biāo)注面板打開與關(guān)閉的 UI 示意圖 在繪制過程中,音符符號和小節(jié)符號的形狀大都是不可變動(dòng)的。 標(biāo)注面板打開與關(guān)閉UI示意圖 圖上p1為圖標(biāo)面板,p2為文字編輯區(qū)。默認(rèn)是關(guān)閉狀態(tài),只顯示標(biāo)注的圖標(biāo);當(dāng)用戶點(diǎn)擊圖標(biāo)想進(jìn)行標(biāo)注時(shí),文本就會(huì)顯示出來,標(biāo)記圖標(biāo)則關(guān)閉。這方式使用起來資源消耗太大并不適合該系統(tǒng)。本系統(tǒng)所支持的選擇對象處了一些基本符號之外,主要還是小節(jié)音符。 選擇管理選擇管理在在線記譜軟件中也是較為常見的功能。 然后每隔一段時(shí)間,就挑出各小節(jié)中累積時(shí)長的最小值,然后判斷每小節(jié)當(dāng)前的累積時(shí)長是否等于它。由于頁上小節(jié)給用戶最直觀的是橫向小節(jié),所以小節(jié)組內(nèi)并行包含多個(gè)小節(jié)。算法中的繪制對象都是相對最小單位的繪制。在計(jì)算小節(jié)被壓縮時(shí),算法會(huì)調(diào)用redrawMeasurePart()這個(gè)方法,即重繪小節(jié)內(nèi)容。但是這樣一來,很可能上一小節(jié)的內(nèi)容會(huì)延伸到下一節(jié),使得樂譜的可觀性不強(qiáng),所以在判斷每一行的小節(jié)總寬度時(shí),如果超出該長度就將折中處理,將該行的空隙部分減小。那么想要達(dá)到這種效果,就必須為樂譜的每行寬度和小節(jié)長度作出限定。第四章 音樂記譜系統(tǒng)的實(shí)現(xiàn)與測試 繪制模塊主要負(fù)責(zé)系統(tǒng)的繪制部分,包括樂譜對象的繪制、樂譜顯示等。 邏輯控制模塊邏輯控制模塊負(fù)責(zé)整個(gè)系統(tǒng)的業(yè)務(wù)邏輯處理,包括繪制時(shí)所必須的繪制策略、音符排列時(shí)所依據(jù)的排列算法以及UI層中的邏輯關(guān)系等。本模塊中最核心的內(nèi)容是XML解析器,它控制著MusicXML文件的生成和讀取。具體體現(xiàn)就是,當(dāng)刪除掉其中某一部
點(diǎn)擊復(fù)制文檔內(nèi)容
職業(yè)教育相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1