2012-04-18 172 views
4

有誰知道在Linux上獲得MIDI SysEx數據雙向轉儲的好方法嗎? (在Yamaha PSR-E413 MIDI鍵盤和在Wine中運行的Yamaha MusicSoft Downloader副本之間)雙向嗅探/窺探ALSA MIDI SysEx交換

我想反向設計用於將MIDI文件複製到鍵盤的內部存儲器或從其中複製的協議我需要記錄兩者之間的有效交流。

該實用程序在Wine中工作(with a little nudging),但我不希望在Wine中使用FUSE文件系統時,不得不依賴Wine中便宜且無法編寫腳本的應用程序。

這裏的事情的當前狀態:

  • 我的鍵盤通過內置的USB-MIDI橋連接到我的電腦。 USB轉接器/窺探器是可能的,但如果可能的話,我寧願避免它們。我甚至不想在我開始之前解碼另一層協議編碼。
  • 我只運行Linux。但是,如果真的除了基於Windows的dumper/snooper之外沒有別的選擇,我可以嘗試在我的WinXP VirtualBox VM上使用USB 1.1傳遞。
  • 我使用dmix爲我的音頻系統運行裸ALSA以進行波形音頻混合。
    • 如果需要聲音服務器,我願意試驗JACK。
    • 請不要PulseAudio。花費足夠長的時間從我的系統中刪除它。
  • 如果該過程涉及ALSA MIDI路由:
    • 虛擬直通設備,因爲它常常只出現在一個ALSA跳線盤GUI等patchage瞬間之前,我可以從內部的下載器是優選的選擇開始與鍵盤通信。
    • KMIDIMonGMIDIMonitor都不支持雙向監聽,據我所知。
    • virmidi isn't relevant和我還沒有設法得到snd-seq-dummy工作。
  • 我想我可以修補ALSA來獲得轉儲,如果我真的必須的話,但它確實是最後的選擇。
    • 絕大多數我的編程經驗是Python,PHP,Javascript和shell腳本。
    • 我幾乎沒有經驗用C編程。
    • 我從來沒有見過內核模式代碼的一瞥。
    • 我寧願保持系統穩定,正常運行時間也很長。

回答

4

這個問題一直無人接聽了一段時間,雖然我沒有一個確切的答案,你的問題我可能有東西,可以把你在正確的方向(或類似的問題,也許其他人)。

當我想要嗅探在Akai LPK25 MIDI鍵盤上用於設置和讀取預設的數據時,我有一個類似的簡單但不復雜的問題。與您的設置類似,設置鍵盤的軟件可以在Wine中運行,但我也沒有找到Linux的嗅探器設置。

由於缺乏現有的解決方案,我使用ALVIA ​​MIDI路由通過virmidi端口轉出我自己的解決方案。我明白爲什麼你看到它們毫無用處,因爲沒有額外的軟件,它們無法幫助嗅探MIDI流量。

我的解決方案是在Java中編程一個MIDI繼電器/橋接器,從virmidi端口讀取輸入,顯示數據並將其發送到鍵盤。鍵盤上的答案(如果有的話)也被讀取,顯示並最終傳回到virmidi端口。 Wine中的應用程序可以設置爲使用virmidi端口進行通信,理論上這個過程是完全透明的(除了潛在的延遲問題)。該應用程序是以通用方式編寫的,而不是硬編碼到我的問題。

我只處理大約20個字節長度的SysEx消息,所以我不確定該軟件對於嗅探大量數據的傳輸有多好。但也許你可以修改它/按照這個例子編寫你自己的程序。

來源可在這裏:https://github.com/hiben/MIDISpy

(Java 1.6的,包括Ant構建文件,來源是根據BSD許可證)

+0

謝謝。一旦我不再因剛剛開始一個新的學期課程而感到不知所措,我會試一試。 – ssokolow 2012-09-07 12:31:14

-1

有關使用gmidimonitor什麼?請參閱http://home.gna.org/gmidimonitor/

+0

正如在問題中所說的,「就我所知,KMIDIMon和GMIDIMonitor都不支持雙向窺探。」 – ssokolow 2012-12-30 07:30:29