<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 計(jì)算機(jī)接口使19世紀(jì)管風(fēng)琴自行彈奏

          計(jì)算機(jī)接口使19世紀(jì)管風(fēng)琴自行彈奏

          作者: 時(shí)間:2013-04-07 來(lái)源:網(wǎng)絡(luò) 收藏


          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_StoreStatusByte, 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},

          };

          我們成功演奏了一些非常復(fù)雜、快節(jié)奏的音樂(lè),從古典到搖滾;電磁鐵和驅(qū)動(dòng)器在速度方面并沒(méi)有表現(xiàn)出太大的局限性。

          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_StoreStatusByte, 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},
          };

          在該結(jié)構(gòu)體中的第一個(gè)entry表示當(dāng)前狀態(tài);第二個(gè)entry表示事件到達(dá);第三個(gè)entry表示處理該事件需要使用狀態(tài)轉(zhuǎn)換功能;第四個(gè)entry表示下一狀態(tài)。

          狀態(tài)機(jī)業(yè)務(wù)端采用的代碼如下:

          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();
          }

          事件循環(huán)提供的事件是對(duì)這種功能的論證,根據(jù)當(dāng)前的狀態(tài)和事件,采取某種措施和改變系統(tǒng)狀態(tài)。事件的類(lèi)型包括字節(jié)到達(dá)MIDI接口,字符到達(dá)控制端口和按下重啟按鈕(panic button)。所有經(jīng)驗(yàn)豐富的MIDI玩家都知道重啟按鈕是保護(hù)耳朵和電源必備的特性——它可無(wú)條件地關(guān)閉所有電磁鐵,使系統(tǒng)恢復(fù)到已知安全狀態(tài)。

          演奏WaldflOe

          安裝了這種應(yīng)用精致的控制器, 機(jī)器人手可演奏從狂想曲到搖滾的所有風(fēng)格音樂(lè)。隱藏在琴鍵底部的是電磁鐵木制背板——每塊板上安裝30個(gè)或更多的電磁鐵,同時(shí)還安裝了一些回收利用的罐狀電容器,為電磁鐵提供電能。我們將整個(gè)驅(qū)動(dòng)器組件與連接。在圖的上方,您可看到Spartan-3E入門(mén)套件開(kāi)發(fā)板和其右側(cè)的接口萬(wàn)用板;我們利用回收利用的CAT5電纜將這些裝置與驅(qū)動(dòng)器組件連接。

          用文字很難說(shuō)明的運(yùn)行情況,因此,我建議您點(diǎn)擊本文結(jié)尾的互聯(lián)網(wǎng)鏈接地址,收看我們上傳的視頻。當(dāng)機(jī)器人管風(fēng)琴手演奏《月光奏鳴曲》或《Jump》時(shí),您將會(huì)聽(tīng)到電磁鐵發(fā)出的咔嗒聲——這是電磁鐵鐵芯降至線圈底部時(shí)發(fā)出的聲音,不是杠桿敲擊琴鍵的聲音。不過(guò),您若是坐在大廳里,而不是站在講道臺(tái)上,電磁鐵發(fā)出的聲音就會(huì)小很多。您所能聽(tīng)到的只是管風(fēng)琴流淌出的優(yōu)美音樂(lè)。

          我們利用這套系統(tǒng)成功演奏了一些非常復(fù)雜、快節(jié)奏的音樂(lè),從古典到搖滾;電磁鐵和驅(qū)動(dòng)器在速度方面并沒(méi)有表現(xiàn)出太大的局限性。即使在彈奏要求最苛刻的曲目時(shí),電磁鐵電源在15V電壓條件下通常電流不超過(guò)4A。即使我們稍微過(guò)度使用電磁鐵,電磁鐵線圈也沒(méi)有出現(xiàn)明顯升溫的情況??偠灾?,我們對(duì)這個(gè)系統(tǒng)非常滿(mǎn)意,同時(shí)為參與開(kāi)發(fā)這套系統(tǒng)深感自豪。

          WaldflOe下一步是什么?噢,我們已經(jīng)非正式地邀請(qǐng)了一些音樂(lè)家為這種新樂(lè)器創(chuàng)作曲目(尤其是對(duì)擁有53根手指、從不感到疲倦的演奏者感興趣的作曲家),我們還考慮舉辦一個(gè)獨(dú)奏會(huì)。另一種可能是實(shí)現(xiàn)管風(fēng)琴音栓運(yùn)作的機(jī)械化,便于我們?cè)陔娮友葑噙^(guò)程中改變音量和音色。我們還在考慮采取某些方法驅(qū)動(dòng)管風(fēng)琴的低音踏板,使最長(zhǎng)的低音管發(fā)音。最后也是最有可能完成的是,我們正打算在互聯(lián)網(wǎng)上推出一項(xiàng)服務(wù),使公眾能夠把他們的MIDI文件上傳至這個(gè)系統(tǒng),然后再聆聽(tīng)管風(fēng)琴的實(shí)時(shí)演奏。

          然后,我們會(huì)再次回到酒吧。

          如欲觀看和收聽(tīng)WaldflOe的演奏,敬請(qǐng)登錄:http://dorkbot.noodlefactory.co.uk/ wiki/WaldFlote。

          上一頁(yè) 1 2 3 下一頁(yè)

          評(píng)論


          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();