楽器演奏のためのMIDI RTコンポーネント
楽器演奏のためのMIDI RTコンポーネント
概要
MIDI形式のデータをRT-Middleware上で扱うためのIDLファイルと,それを利用したサンプルRT-Component(RTC)を配布します.MIDI(Musical Instrument Digital Interface)は電子楽器の共通規格であり,楽器演奏ロボットなどにも利用されています.
RT-Middleware上でロボットと音楽を協調させるといった場面で活用できます.
テスト環境
- 言語: Python 2.6.6
- Windows 7, 8, 8.1 32bit/64bit
- 外部依存Module:
- MIDIHandBell RTCはpySerialに依存しています.
- MIDIPiano RTCはMIDIIOライブラリに依存しています.
IDLファイル
MIDI::MIDIMessage
MIDIデータをRTM上で扱うための独自データ型の定義ファイルです.
各構造体や変数の使い方や,MIDIメッセージとの対応についてはGitHubのREADMEをご覧ください.
ダウンロードと詳しい説明
システム例
下図のようなmidi_outポートにmidi_inポートを持つ複数のRTCを接続するのが基本的な使用方法となります.
このような構成にすることで,一つのMIDIメッセージを複数のRTCで共有することができます.
RT-Components
MIDIParser
SMF形式(.midi)のファイル中の音楽データをMIDIメッセージとして出力するRTCです.
MIDIファイルの構文解釈を行い,音楽データが指定するタイミングでMIDIメッセージを出力します.
ダウンロードと詳しい説明
MIDIConsoleOut
MIDIメッセージを受け取り,コンソール上に表示するRTCです.
MIDIデータを扱うRTCのデバッグなどに使用できます.
ダウンロードと詳しい説明
MIDIHandBell
MIDIメッセージに従い,ハンドベルを演奏するロボットの制御用RTCです.
20音のハンドベルをホビーサーボを用いて演奏します.
MIDIPiano
MIDIメッセージに従い,ソフトウェアシンセサイザを制御して演奏するRTCです.
本RTCはMicrosoft GS Wavetable SW Synthを用いて動作テストしています.
RT-System
下記動画で紹介しているハンドベル演奏ロボットのシステムは下図のようになります.
MIDIParser RTCが楽曲データのタイミングに合わせ,MIDIメッセージを各RTCに送信することで音楽を演奏します.
更新履歴
・17:44 10-12-2014ライセンス上問題のあったモジュールを自前で作り直したので,MIDIPiano RTCを公開いたします.
・21:40 10-11-2014
プロジェクトにMIDIMessage型が想定するシステムの構築例を追記ました.
・18:00 30-10-2014
プロジェクトを仮アップロードしました
コメント
MIDIPianoの公開に際しライセンス上の問題とは何でしょうか?差し支えなければ、問題点を教えてください。
電気通信大学の松田です. ライセンスの問題ですが,ソフトウェアシンセサイザの制御に,おーぷんMIDIぷろじぇくとというサイトで配布されているMIDIIOLibというライブラリを使用しています. このライブラリのPythonラッパーを使用しているのですが,このラッパーのライセンスが不明のため配布することができない状況になっています. このラッパーの作者の方に問い合わせておりますが,11月10日現在ご返答をいただけておりません. そこで,現在,該当するラッパーに依存しない形での実装に変更し,配布を検討しています. ご迷惑をおかけしますが,今しばらくお待ちください.
おーぷんMIDIぷろじぇくと http://openmidiproject.sourceforge.jp/MIDIIOLibrary.html
ライセンス上問題のあったモジュールを作り直したので,MIDIPiano RTCを公開いたしました. お待たせしてしまい,申し訳ありませんでした.
ビデオにあるサンプルのシステム構成図はないのでしょうか?ハードウェアの構成も含めてドキュメントがあれば(再)利用する場合にどのような点に気を付ければよいかの助けになると思います。
電気通信大学の二瓶です. コメントありがとございます. まずビデオ内で使用しているサンプルのRT-Component接続関係をプロジェクトページに追加いたしました. また,電気的な接続や機構部分についてのドキュメントを追加で用意させていただきます. 公開まで今しばらくお待ちください.