ものがたり(旧)

atsushieno.hatenablog.com に続く

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