バイオリンのチューナーアプリを作ろうと思い立ち調査を開始。
PC上で音楽関連の操作をするにはmidiを利用する。javaではすでにjavax.soud.midiパッケージが提供されている。
midiではノートとベロシティで音を決める。
ノートについては以下のリンクが詳しい。
http://www.asahi-net.or.jp/~hb9t-ktd/music/Japan/Research/DTM/freq_map.html
では早速PC上で音を出してみる。
コードはこちらを参考にさせてもらった。
調弦に使うのは440HZのAであるから上記サイトよりノートが69となる。強度を最強にするのでベロシティは127である。コードは以下のようになった。
/*
* midi02
* 指定した音を連続して演奏してみる
*
*/
package midi01;
import java.io.*;
import javax.sound.midi.*;
class Test {
public static void main(String[] args) throws Exception {
Receiver midireceiver = null;
try {
midireceiver = MidiSystem.getReceiver();
ShortMessage smsg = new ShortMessage();
smsg.setMessage(ShortMessage.NOTE_ON, 69, 127);
midireceiver.send(smsg, -1);
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
} finally {
if (midireceiver != null) midireceiver.close();
}
}
}
とりあえず成功。今後の展開としては以下のようにして最終的にはスマフォ対応のバイオリンチューナーを開発する。
- 連続的な音の再生
- あらかじめ記録した音の再生
- 音の取り込み
- 取り込んだ音のmidi化
- midi化した内容の表示
- あらかじめ指定した音との比較
- 違いの大きさを表示
- GUIを整える