iPadが出て、知人が無駄に見せてくれるというので、じゃあそれまでにMonoTouchを使って何かアプリを作ってやろうと思って、音を鳴らすおもちゃを何か作ってみようと考えた。考えたのだけど、CocoaTouchはMIDIすらまともに鳴らせないプラットフォームなので、音を鳴らすことすら望みどおりに行えない。仕方ないので、既存の音声合成ライブラリを使おうと思い至った。Objective-Cで書かれているものであれば、btouchというツールを使って、ちょっとIDLのようなインターフェースを書くだけで使うことができるし、Cで書かれたものであればP/Invokeすれば良い。
というわけで探してみて、最初に出てきたのがMobileSynthというアプリケーションのコードだった。これは実のところ今は作者が自らAppStoreに登録しているわけではないようだが、iPhoneでは無事動かすことはできた。しかしソースコードがC++だったので、このままでは使えない。というわけで最初Objective-Cのラッパーを作ろうとしたのだけど、ソースをよく見てみたら、コード量はたかだか数百行のソースが十数ファイルあるだけだ。というわけで、ざっくりとそのままC#に移植してみた。 http://gist.github.com/418212
これにはあくまで音声合成の機能しか含まれていないので、iPadでは、合成した音声はCoreAudioの機能を使って再生してやらなければならない。他にもいろいろパラメータを設定してやらなければならないので、最低限のパラメータコントローラーを実装したUIを作って鳴らしてみることにした。 http://dl.dropbox.com/u/493047/2010/iPadTest3.tar.bz2
といっても、やっていることはmobilesynthの縮小再生産のようなもので、今のところほぼ存在意義がない...どころか、どうもmobilesynth portがうまくいっていないのか、使い方が良くないのか、期待している通りの音が出ない。音声モジュールはUIのおまけにすぎない予定なので、ここに深入りするかどうかは未定だ。本当に作りたいものは、こういうおもちゃではないし、iPad版はandroid版に向けての単なる踏み台にするつもりでいる。
Leave a comment