android小ネタ (1) SmfToJetConverter
先週はandroid SDKで遊んでいたので、ちまちまと小ネタを出してみようかと思います。
AndroidではどうやらMIDIが使えるらしいのですが、javax.sound.midiパッケージは用意されておらず、標準でMIDI楽曲を鳴らす方法として使われているJetPlayerだと、単なるMIDIファイルを読んでくれないわけです*1。本家android-developersなんかでも「SMFを読む方法は無いの?」みたいな投稿があったりして、需要はあるようなのですけどね。
JetCreatorとJetPlayerの形式だと、ゲームみたいなのを作るには向いているかもしれません。でも、単曲を鳴らすのにいちいちJetCreatorなんて呼んでいられんですよね(というかpythonだからandroid環境で実行できないし)。そんなわけで、ちょっとバイナリを眺めてJetCreatorのソースを読んで、android環境で動的にSMFからjetを作れるようなクラスをJavaで書いてみました。Jet全体ではもっとややこしい構造かもしれないけど、1つのSMFセグメントをもっているだけのJetの構造はとっても簡単。
http://github.com/atsushieno/jmdsp/blob/master/src/name/atsushieno/SmfToJetConverter.java
続くかどうかは未定です。
# SMFの単なる再生ならMediaPlayerで出来なくもないわけですが、もっと手の込んだことをしようとすると全然できません
*1:参考: id:hidecheck:20091105:1257436698