Android から eVY1 シールドを制御する (SMFマルチトラック編)


20131220android_evy1

SMF ( Standard MIDI File ) マルチトラック形式のファイルを解析して、演奏します。
Android 端末の USB-HOST 機能を使っています。

ソースコードは Google Code に置いています。

ソースコードの簡単な解説
(1) FileBinary.java
assets にあるMIDIファイルを読み込みます。

(2) MidiParser.java
MIDIファイルを解析して、トラック毎のMIDIメッセージに分割します。

(3) MultiToSingle.java
マルチトラックをシングルトラックに変換します。

(4) ParseMessage.java
(5) ParseList.java
(6) MidiMessage.java
(7) MidiList
MIDIメッセージを格納するコンテナです。

(8) ParserAsyncTask.java
MIDIファイルの解析に時間がかかるので、非同期タスクで実行します。

(9) MidiPlayer.java
MIDIメッセージを順番に実行します。

(10) MainActivity.java
メインのクラスです。

ビルドするには USB-MIDI-Driver が必要です。

実行する
MIDIメッセージを表示します。

20131220evy1sample3

参考
eVY1シールド – スイッチサイエンス
USB-MIDI-Driver
故郷(ふるさと)(スタンダードMIDIファイル)
We wish you a Merry Christmas (スタンダードMIDIファイル)
SMF ( Standard MIDI File ) – wikipedia


Android から eVY1 シールドを制御する (SMFシングルトラック編)


20131220evy1

evocaloid_smf.ino を Android に移植したものです。
SMF ( Standard MIDI File ) シングルトラックを演奏します。
Android 端末の USB-HOST 機能を使っています。

ソースコードは Google Code に置いています。

ソースコードの簡単な解説
(1) MidiFile.java
assets にある MIDI ファイルを読み込みます。
evocaloid_smf.ino ではハードコーデングされています。
JAVA で記述したら、64KBの壁でぶつかりました。
テキストファイルにして、外出ししました。

(2) MidiParser.java
MIDIファイルを解析して、MIDIメッセージに分割します。

(3) MidiMessage.java
1つのMIDIメッセージを格納するコンテナです。

(4) ParserAsyncTask.java
MIDIファイルの解析に時間がかかるので、非同期タスクで実行します。

(5) MainActivity.java
MIDIメッセージを順番に実行します。

ビルドするには USB-MIDI-Driver が必要です。

実行する
MIDIメッセージを表示します。

20131220evy1sample2

参考
eVY1シールド – スイッチサイエンス
スタンダードMIDIファイルで歌うサンプルスケッチ evocaloid_smf.ino
USB-MIDI-Driver
SMF ( Standard MIDI File ) – wikipedia


Android から eVY1 シールドを制御する (MML編)


20131208evy1

eVY1_MML_sample.ino を Android に移植したものです。
Android 端末の USB-HOST 機能を使っています。

ソースコードは Google Code に置いています。

ソースコードの使い方
音符をMML記法で記述します。
MML = “CDEFEDC EFGAGFE”;

歌詞をカンマ区切りで記述します。
カンマで区切れた歌詞が、MMLの1つの音に対応しています。
LYLIC = “か,え,る,の,う,た,が,き,こ,え,て,く,る,よ”;

ビルドするには USB-MIDI-Driver が必要です。

実行する
歌詞と音とMIDIコマンドを表示します。

20131208evy1sample1

参考
eVY1シールド – スイッチサイエンス
MMLで歌うサンプルスケッチ eVY1_MML_sample.ino
USB-MIDI-Driver