iPhoneアプリ日記1

時としてはてなっぽいことを書いてみる。
最近は研究関連で iPhoneアプリを作っている(作ろうとしている、ともいう)のだけど、
音の処理が結構難しくて、未だ入り口でうだうだしているという。


とりあえず、今やりたい事を書き出すとこんな感じ。

  1. 6〜8個、一つ8秒程度の音楽ファイルをレイテンシほぼなしで同時に再生
  2. そのファイルを一つの音楽ファイルにまとめて書き出し
  3. 書き出したファイルを繋げて再生


1. が、結局のところ iPhone内でミキシングをするってことなんだよな。
これがなかなかハードルが高い気がしています。
というかこれができればあとの二つはできなくても最悪、あり。
自分でDAWで書き出せば良いじゃん、と思われるかもしれないですが、
それだと(詳しくは省略しますが)根本的な目標が達成できないんですよね……。


とりあえず、iPhoneで使える音系の framework を調べてみた。
バージョン2.2から使えるようになった AVFoundation が、
caf 形式での同時再生に対応しているので、
さすがアップルさん、と喜び勇んで使ってみたら、レイテンシが酷くてすごいことに。
四つ打ちリズムと裏打ちベースあわせて再生したら、すごく気持ち悪い、です。


昨日は強引に、二番目の音楽ファイルの再生を0.1秒程度早めて強引に合わせたけど、
これじゃああまりにもお粗末なので、別の framework を探っている。
やっぱり OpenAL か、それとも Audio Queue Service を使うしか無いのかなあ。
多分 OpenAL はミキシングもできる。
Audio Queue Service はミキシングできるのかも分からない。


しかし AVFoundation は同時再生に対応してるのにレイテンシ酷いってどういうことだ。
その状況で同時再生ってなんか意味あるのかな。
音楽鳴らしながら効果音乗せたいときぐらいしか用法が思いつかない。
そもそもその効果音も遅れて再生される気もするし。
どうなのそこらへん、アップルさん。


同時再生が簡単にできる方法があったら、教えてもらえると嬉しいです。