《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 計算機接口使19世紀管風琴自行彈奏
計算機接口使19世紀管風琴自行彈奏
蘇格蘭愛丁堡的一群工程師如何利用賽靈思 Spartan-3E入門套件創造出機器人管風琴手
Gareth Edwards
摘要: 蘇格蘭愛丁堡的一群工程師如何利用賽靈思 Spartan-3E入門套件創造出機器人管風琴手。
Abstract:
Key words :

     正如許多新奇的創造一樣,這一切都始于酒吧里的一次談話。 

     “您知道樓上森林咖啡屋里的管風琴嗎?” 

     “知道。” 

     “我們應該創造一個機器人管風琴手來演奏它。” 

     “當然,我們應該這樣做!” 

     一次漫不經心的交談促使我們著手開展“Waldfl te項目”。 

     我的日常工作是擔任賽靈思蘇格蘭公司IP部門的設計經理,但在業余時間,我是“dorkbot”這個非正式組織的一分子,該組織旨在推進工程科學界與藝術界之間的草根協作;活動口號是“用電做離奇的事情”。我屬于愛丁堡地區的dorkbot(可以稱作“dorkbot alba”或“dorkbot Edinburgh”,主要取決于您對誰講)。我們的成員創造了很多新奇的東西,包括像素映射LED禮帽、自動牙刷、幻覺魔術設備、電磁改錐和各種噪音發生盒。鮮有意外傷害事故發生。 

     dorkbot Edinburgh團隊每隔一周于周二在森林咖啡屋聚會,這間咖啡屋位于愛丁堡大學附近,是由志愿者經營的非贏利性聚會場所。我參加了幾周在這家咖啡屋舉行的聚會,一天晚上,當我到樓上修理舞臺照明設備時,驚奇地發現自己置身教堂之中,這里有布道臺和唱詩班樓座,最重要的是,這里有一臺16英尺高的管風琴。 

     事實上,咖啡屋所在的建筑曾經是愛丁堡公理教會的會場——因此有管風琴。但這里并不是這臺管風琴最初的家。19世紀末,倫敦著名的管風琴制造商Gray和Davison首次將這臺管風琴安裝在愛爾蘭的都柏林城堡,1900年,不知什么原因,這臺管風琴被轉移到愛丁堡。自此,這臺管風琴經過數次維修,一直留在愛丁堡。 

     酒吧閑聊之后,我們并沒有立即行動起來。在隨后7個月的聚會中,我們不斷地思考、探究、討論,最后設計出了幾種操縱管風琴鍵盤的方式。 

     我們將這個項目取名為“Project Waldfl?te”,是因為管風琴上的一個音栓叫“Waldfl?te”。在德語中,它的意思是“森林長笛”。由于管風琴位于森林咖啡屋,因此聽起來還有些詩情畫意。 

 采用正確的機械部件

     在開發的初始階段我們就明確地將問題分為機械和電子兩部分。如果我們能夠找到解決機械問題的方案,就能相對獨立地打造這兩個部分。 

     制約我們的主要因素之一是資金——我們沒有多少資金可用,全部資金僅為我們幾個核心成員自己籌集的資金。我們走遍尾貨市場,找到了一些價格合適的電磁鐵。我們能夠以1英磅左右(約合1.5美元)的單價得到100個這樣的電磁鐵,我們訂購了6個在管風琴上進行試驗。 

     我們發現電磁鐵的尺寸非常理想,但電磁鐵芯的運動距離比要始終如一地觸動管風琴白鍵所需的運動距離略短。盡管我們可以直接利用電磁鐵芯來驅動黑鍵,但我們仍然需要某種杠桿來驅動白鍵。

  


圖1     電磁體組件原型

 

    電磁鐵組裝的首個原型如圖1所示,圖2為電磁鐵的工作原理圖。對于白鍵而言,頂部的膠合板杠桿的后面用管道膠帶作鉸鏈連接,當電磁鐵通電時,它會受到下拉的力量。當電磁鐵斷電時,管風琴鍵自身會提供向上力——因此無需另外使用彈簧。對于黑鍵而言,從電磁鐵底部伸出的小銷可以足夠的力量直接按壓琴鍵,彈奏音符。 

 

圖2       機械布局

  

    組件測試表明的確可以成功地按壓琴鍵。同時也表明,我無法做到將放置電磁鐵的空間七等分,其間隔無法接近鍵盤八度音階的實際間隔,因此,我們只能一次測試一個鍵。但我們證實了這個原理是可行的,因此,我們繼續開發工作,訂購了適用于整個鍵盤的部件,然后開始著手電子設計。

 

電子設計

     在進行電子設計時,我們大家坐下來,粗略地設計出電子結構;圖3為基本結構圖。在圖的左側,MIDI消息由外部傳入(我將在下文詳細介紹MIDI協議)。圖的右側是一個位移寄存器鏈;控制器在驅動相應的“數據”值填充位移寄存器鏈時,負責切換“時鐘”信號,然后通過“選通”信號將位移寄存器鏈的內容并行發送至電磁鐵驅動器的輸入端。 

 

 

 

圖3       基本電子結構圖

 

    我們在位移寄存器/驅動器鏈上采用了74HC595位移寄存器IC。不過,電磁鐵試驗顯示每個電磁鐵大約需要15V電源提供350mA驅動電流——超出了CMOS輸出級的提供范圍。這了滿足這個要求,我們在每個位移寄存器IC上增加了一個ULN2803A Darlington輸出級。這個芯片還具備一個保護二極管,對切斷電流時電磁鐵生成的高反激電壓進行分流,避免增加一個分立式二極管。我們在萬用板上制作了幾個驅動器電路板原型,每個可驅動16個電磁鐵。 

 控制器設計  

     盡管我們可以采取多種方法設計控制器(包括利用Arduino平臺或采用其他微控制器),但我們最終還是選擇使用賽靈思Spartan-3E入門套件,因為我在賽靈思的日常工作中用過這種開發板,對相關工具了如指掌。特別是,我知道如何使用Platform Studio SDK和ChipScope?等調試工具,由于這有可能是一個現場調試項目,這樣做可節省時間。我們使用賽靈思嵌入式開發套件,開發核心組件MicroBlaze? 子系統(圖4)。 

 

 

圖4      MicroBlaze子系統

 

    除了MIDI接口和位移寄存器接口,我們還選擇增加了串行RS-232控制端口,幫助我們調試系統。RS-232協議看起來有點老套,但在此類項目中,它的價值非凡。我們也增加了一些GPIO端口,用于驅動LED,讀取開關和按鈕,以便在無需使用控制端口的情況下,完成某些交互操作。 

 寫入MicroBlaze固件  

     我們已經確定系統的最佳輸入接口是MIDI端口。自20世紀80年代以來,樂器數字接口(MIDI)已經成為連接合成器等數控樂器與其他樂器或控制計算機的標準接口,因此,顯然我們也應當采用這種接口。MIDI將使我們取得了管風琴連接的最大靈活性。 

 MicroBlaze可從內部顯示整個鍵盤的狀態以及系統正在按壓哪些鍵——即系統正在為哪些電磁鐵加電。

     MIDI是一種單向低速串行協議,傳輸速率為31250波特。它包含多種類型的信息,但就我們的目的而言,只有NOTE ON和NOTE OFF是重要的信息類型。每個NOTE ON信息由3個字節構成。 

     第一個字節是0x9n,這里的n代表通道數。  

     第二個字節是0至127的音符數,中間的C為第60號。 

     第三個字節是0至127的速度值。 

     NOTE OFF除第一個字節是0x8n外,其余與此非常相似。 

     在我們的設計中,我們決定同步聽取所有通道的信息( “omni”操作)。由于管風琴鍵盤對速度并不敏感,因此,我們可安全地忽略所有速度字節。 

     EDK UART IP核接收MIDI消息,然后通過FIFO,一次向MicroBlaze處理器發送一條信息。MicroBlaze可從內部顯示整個鍵盤的狀態和系統正在按壓哪些鍵(即系統正在為哪些電磁鐵加電)。固件采用一個靜態查找表,指出與這個音符相關的電磁鐵,將這個用做內部圖的索引;到達的NOTE ON消息將相應entry值設為“1”,而NOTE OFF消息將entry值設為“0”。 

     內部圖更新后,利用圖的全部內容更新電磁鐵寄存器;通過GPIO端口的位拆裂,MicroBlaze處理器一次將一位的圖內容寫入位移寄存器的數據輸入端,然后切換時鐘信號,移動一下位移寄存器。一旦利用圖內容對整個位移寄存器進行了更新,MicroBlaze會將一個上升沿寫入STROBE行,這能夠將位移寄存器的值拷貝至輸出寄存器,為正確的電磁鐵加電或斷電,從而產生悅耳的音樂。 

     我們將固件用作軟件狀態機;對于不采用實時操作系統的嵌入式應用而言,這可提供某些多線程應用功能,但沒有實際線程實現開銷。靜態結構數組根據當前的狀態,指出系統針對特定事件應當采取什么措施。 

 const midi_state_table_entry_t MIDI_STATE_TABLE[] = 

{INHIBITED,PANIC, 

MidiSM_Panic,INHIBITED}, 

{ANY_STATE,PANIC, 

MidiSM_Panic,INIT}, 

{ANY_STATE,INHIBIT, 

MidiSM_DoNothing,INHIBITED}, 

{ANY_STATE,OTHER_STATUS_RECEIVED 

,MidiSM_ClearMessage,INIT}, 

{INIT,NOTE_ON_OR_OFF_RECEIVED, 

MidiSM_StoreStatusByte,NOTE_ 

ON_OR_OFF}, 

{INIT,DATA_RECEIVED, 

MidiSM_DoNothing,INIT}, 

{NOTE_ON_OR_OFF,NOTE_ON_ 

OR_OFF_RECEIVED,MidiSM_ 


我們成功演奏了一些非常復雜、快節奏的音樂,從古典到搖滾;電磁鐵和驅動器在速度方面并沒有表現出太大的局限性。

 StoreStatusByte,NOTE_ON_OR_OFF}, 

{NOTE_ON_OR_OFF,DATA_RECEIVED, 

MidiSM_StoreNoteNumber,NOTE_ON_OR 

_OFF_NUMBER}, 

{NOTE_ON_OR_OFF_NUMBER, 

NOTE_ON_OR_OFF_RECEIVED,MidiSM_St 

oreStatusByte, NOTE_ON_OR_OFF}, 

{NOTE_ON_OR_OFF_NUMBER, 

DATA_RECEIVED,MidiSM 

_NoteOnOrOffComplete, 

NOTE_ON_OR_OFF}, 

{INHIBITED,ENABLE, 

MidiSM_DoNothing,INIT}, 

{LAST_STATE, LAST_EVENT, 0, 

LAST_STATE}, 

}; 

 

    在該結構體中的第一個entry表示當前狀態;第二個entry表示事件到達;第三個entry表示處理該事件需要使用狀態轉換功能;第四個entry表示下一狀態。 

 

    狀態機業務端采用的代碼如下: 

 

XStatus MidiSM_ 

DoStateTransition 

(midi_state_machine_t *pInstance, 

u8 event) 

const midi_state_table_ 

entry_t *pTable = pInstance- 

>pStateTable; 

// Search for a match in the 

state table 

do { 

if ((event == pTable- 

>received_event) 

&& ((pInstance- 

>current_state == pTable- 

>state) 

|| (pTable->state == 

ANY_STATE))) 

(*pTable- 

>transition_function)((v 

oid *)pInstance); 

pInstance->current_state 

= pTable->next_state; 

return XST_ 

SUCCESS; 

pTable++; 

} while (pTable->state != 

LAST_STATE); 

// Aaargh, something bad happened - should never get here 

XASSERT_NONVOID_ALWAYS(); 

 

    事件循環提供的事件是對這種功能的論證,根據當前的狀態和事件,采取某種措施和改變系統狀態。事件的類型包括字節到達MIDI接口,字符到達控制端口和按下重啟按鈕(panic button)。所有經驗豐富的MIDI玩家都知道重啟按鈕是保護耳朵和電源必備的特性——它可無條件地關閉所有電磁鐵,使系統恢復到已知安全狀態。 

 

    應用精致的控制器;機器人管風琴手可演奏從狂想曲到搖滾的所有風格音樂。 

 

演奏Waldfl?e  

 

    對于安裝了這種精巧裝置的管風琴,隱藏在琴鍵底部的是電磁鐵木制背板——每塊板上安裝30個或更多的電磁鐵,同時還安裝了一些回收利用的罐狀電容器,為電磁鐵提供電能。我們將整個驅動器組件與管風琴連接。在圖的上方,您可看到Spartan-3E入門套件開發板和其右側的接口萬用板;我們利用回收利用的CAT5電纜將這些裝置與驅動器組件連接。 

 

    用文字很難說明管風琴的運行情況,因此,我建議您點擊本文結尾的互聯網鏈接地址,收看我們上傳的視頻。當機器人管風琴手演奏《月光奏鳴曲》或《Jump》時,您將會聽到電磁鐵發出的咔嗒聲——這是電磁鐵鐵芯降至線圈底部時發出的聲音,不是杠桿敲擊琴鍵的聲音。不過,您若是坐在大廳里,而不是站在講道臺上,電磁鐵發出的聲音就會小很多。您所能聽到的只是管風琴流淌出的優美音樂。 

 

    我們利用這套系統成功演奏了一些非常復雜、快節奏的音樂,從古典到搖滾;電磁鐵和驅動器在速度方面并沒有表現出太大的局限性。即使在彈奏要求最苛刻的曲目時,電磁鐵電源在15V電壓條件下通常電流不超過4A。即使我們稍微過度使用電磁鐵,電磁鐵線圈也沒有出現明顯升溫的情況。總而言之,我們對這個系統非常滿意,同時為參與開發這套系統深感自豪。 

     Waldfl e下一步是什么?噢,我們已經非正式地邀請了一些音樂家為這種新樂器創作曲目(尤其是對擁有53根手指、從不感到疲倦的演奏者感興趣的作曲家),我們還考慮舉辦一個獨奏會。另一種可能是實現管風琴音栓運作的機械化,便于我們在電子演奏過程中改變音量和音色。我們還在考慮采取某些方法驅動管風琴的低音踏板,使最長的低音管發音。最后也是最有可能完成的是,我們正打算在互聯網上推出一項服務,使公眾能夠把他們的MIDI文件上傳至這個系統,然后再聆聽管風琴的實時演奏。 

     然后,我們會再次回到酒吧。 

     如欲觀看和收聽Waldfl e的演奏,敬請登錄:http://dorkbot.noodlefactory.co.uk/ wiki/WaldFlote 

 

   

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲国产精品久久精品怡红院| 欧美高清一区| 精品91久久久久| 老鸭窝亚洲一区二区三区| 欧美在线一二三区| 激情久久中文字幕| 国产九九精品视频| 久久免费精品视频| 亚洲欧洲综合另类| 日韩一级在线观看| 国产精品综合色区在线观看| 欧美色图首页| 久久精品视频播放| 亚洲美女精品一区| 亚洲午夜视频在线| 国产一区二区三区四区五区美女| 美玉足脚交一区二区三区图片| 亚洲理论在线观看| 亚洲国产天堂久久综合| 一区二区三区高清不卡| 国产欧美日韩不卡免费| 免费成人毛片| 麻豆国产精品777777在线| 久久综合久久88| 麻豆精品精品国产自在97香蕉| 久久久久久一区二区| 久久国产一区| 一区二区三区精品国产| 亚洲欧美激情一区| 亚洲国内自拍| 久久婷婷麻豆| 国产三级精品三级| 免费高清在线视频一区·| 久久免费视频网| 久久伊人精品天天| 免费观看不卡av| 欧美激情精品久久久久久大尺度 | 亚洲乱码国产乱码精品精可以看| 99视频一区二区三区| 欧美一区国产在线| 日韩午夜在线电影| 亚洲午夜国产一区99re久久| 亚洲一区综合| 亚洲人精品午夜在线观看| 国产一区白浆| 一区二区三区在线看| 亚洲国产精品久久久久婷婷884 | 国产精品一区在线观看| 黑人巨大精品欧美一区二区| 欧美日韩一二三四五区| 久久躁狠狠躁夜夜爽| 免费一级欧美在线大片| 午夜视频在线观看一区二区三区 | 亚洲国产成人av| 亚洲在线免费观看| 久久精品卡一| 欧美一级理论性理论a| 一本色道久久88精品综合| 91久久在线播放| 99天天综合性| 久久国内精品自在自线400部| 亚洲每日更新| 欧美一区三区二区在线观看| 亚洲午夜影视影院在线观看| 亚洲欧洲精品一区二区三区不卡 | 亚洲福利视频在线| 亚洲一区二区伦理| 亚洲激情综合| 午夜精品久久99蜜桃的功能介绍| 亚洲午夜久久久久久尤物| 欧美中文字幕视频| 香蕉乱码成人久久天堂爱免费| 久久野战av| 国产精品福利影院| 国产精品国产一区二区| 国产夜色精品一区二区av| 亚洲伦理在线观看| 日韩午夜在线播放| 亚洲二区在线观看| 亚洲欧美综合一区| 欧美激情亚洲一区| 欧美久久久久久久久久| 欧美激情精品久久久| 国产午夜精品一区二区三区欧美| 亚洲精品日韩在线观看| 亚洲精品一区二区三区婷婷月| 午夜国产精品影院在线观看| 亚洲欧美网站| 9i看片成人免费高清| 久久久国产精品亚洲一区| 国产精品福利在线观看网址| 亚洲片在线资源| 亚洲高清资源综合久久精品| 欧美在线看片| 国产精品成人aaaaa网站| 国产精品美女一区二区| 国产精品网站在线播放| 国产一区二区毛片| 中国成人在线视频| 亚洲美女精品久久| 免费成人高清视频| 国内外成人免费激情在线视频网站| 韩日欧美一区二区三区| 亚洲一级高清| 亚洲天堂av电影| 欧美精品国产精品| 亚洲高清二区| 亚洲国产日韩一级| 久久一二三区| 国产主播精品在线| 欧美在线精品免播放器视频| 欧美一区二区精品久久911| 欧美日韩黄色大片| 国产精品www网站| 日韩视频在线免费| 99视频有精品| 欧美日韩国产欧美日美国产精品| 亚洲国产精品久久精品怡红院| 久久精品亚洲一区二区三区浴池| 久久激情久久| 国产日韩精品电影| 香蕉成人伊视频在线观看| 午夜免费在线观看精品视频| 国产精品捆绑调教| 亚洲视频中文| 亚洲国产欧美不卡在线观看| 久久婷婷蜜乳一本欲蜜臀| 国产综合自拍| 久久精品国产一区二区三区免费看 | 亚洲一区欧美| 久久免费的精品国产v∧| 国产日韩欧美综合| 午夜一区在线| 久久国产免费| 狠狠色丁香久久综合频道| 久久精品91久久久久久再现| 久久综合一区二区| 亚洲国产99| 妖精视频成人观看www| 欧美特黄一区| 亚洲欧美不卡| 久久久久国产精品厨房| 亚洲高清一区二| 一本色道久久综合精品竹菊| 欧美午夜在线视频| 午夜精品成人在线视频| 久久久综合激的五月天| 在线欧美一区| 翔田千里一区二区| 久久久精品久久久久| 在线观看亚洲a| 午夜精品久久久久久久99樱桃| 欧美在线视频一区二区三区| 国产综合精品| 亚洲乱码国产乱码精品精| 欧美视频免费看| 西瓜成人精品人成网站| 老司机午夜精品视频| 亚洲精品韩国| 亚洲欧美久久久| 欧美久久久久久蜜桃| 在线视频免费在线观看一区二区| 午夜视频一区在线观看| 激情五月***国产精品| 在线视频一区二区| 国产麻豆精品在线观看| 亚洲国产精品电影| 欧美日韩激情网| 香蕉久久a毛片| 欧美精品一区二区蜜臀亚洲| 亚洲一区二区日本| 免费日韩成人| 亚洲视频一二三| 鲁鲁狠狠狠7777一区二区| 一区二区精品在线| 久久青草欧美一区二区三区| 亚洲精品视频在线| 久久精品国产99国产精品| 亚洲激情视频在线| 久久国产高清| 99热精品在线| 久久久中精品2020中文| 99综合视频| 麻豆精品国产91久久久久久| 在线一区二区三区四区五区| 另类综合日韩欧美亚洲| 亚洲婷婷综合久久一本伊一区| 久久精品国产免费| 9色国产精品| 另类国产ts人妖高潮视频| 亚洲一区二区三区四区五区黄| 免费久久99精品国产自| 亚洲影视在线| 欧美另类变人与禽xxxxx| 欧美在线精品一区| 国产精品久久久久久久久婷婷 | 久久久精品日韩欧美| 一本色道久久综合亚洲精品婷婷| 老司机精品福利视频| 亚洲欧美另类久久久精品2019|