トップ 差分 一覧 ソース 置換 検索 ヘルプ PDF RSS ログイン

iPhone開発 サウンドファイル再生について

http://iphone-dev.g.hatena.ne.jp/bricklife/20081003/1223024206
より

System Sound Services

短いサウンドファイルを鳴らすときに一番簡単
実例:Metronome
http://d.hatena.ne.jp/iphone_dev/20080624/1214311422

Audio Queue Services

音量とか複数音源とかループとかを制御するなら(バッファーキュー&コールバック方式)
実例:SpeakHere
http://decomo.info/cocoa/wiki/%E7%BF%BB%E8%A8%B3%E6%96%87%E7%AB%A0:%E3%82%AA%E3%83%BC%E3%83%87%E3%82%A3%E3%82%AA:audio_queue_service%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%82%AC%E3%82%A4%E3%83%89:%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB

注意:
http://discussions.apple.com/thread.jspa?threadID=1585197&tstart=42
m4a や mp3再生には以下のコードを AudioPlayer.m の setupAudioQueueBuffers を以下のように変更すること。

 - (void) setupAudioQueueBuffers {
   
   // calcluate the size to use for each audio queue buffer, and calculate the
   // number of packets to read into each buffer
   [self calculateSizesFor: (Float64) kSecondsPerBuffer];
   
   // prime the queue with some data before starting
   // allocate and enqueue buffers				
   int bufferIndex;
   
   for (bufferIndex = 0; bufferIndex < kNumberAudioDataBuffers; ++bufferIndex) {
     
     AudioQueueAllocateBuffer (
       [self queueObject],
       [self bufferByteSize],
       &buffers[bufferIndex]
       );
     
     bool isFormatVBR=(audioFormat.mBytesPerPacket == 0 || audioFormat.mFramesPerPacket == 0);
     
     if(isFormatVBR)
     {
       packetDescriptions = (AudioStreamPacketDescription*)malloc(numPacketsToRead * sizeof(AudioStreamPacketDescription));
     }
     else
     {
       packetDescriptions=NULL;
     }
     
     
     playbackCallback ( 
       self,
       [self queueObject],
       buffers[bufferIndex]
       );
     
     if ([self donePlayingFile]) break;
   }
 }

Audio UnitのRemote IO

レイテンシーが気になる場合その1。OSに統合されているオーディオ機能
http://ja.wikipedia.org/wiki/Audio_Units
http://d.hatena.ne.jp/iphone_dev/20080604/1212568727

OpenAL 1.1

レイテンシーが気になる場合その2。クロスプラットフォームのオーディオAPI
http://ja.wikipedia.org/wiki/OpenAL
http://openal.org/
http://www.dss.nifs.ac.jp/ito/memo/openal01.html
http://memeplex.blog.shinobi.jp/Category/4/

サンプル
http://www.appsamuck.com/day25.html

[カテゴリ: プログラミング言語 > Objective-C]

[通知用URL]



  • Hatenaブックマークに追加
  • livedoorクリップに追加
  • del.icio.usに追加
  • FC2ブックマークに追加

最終更新時間:2012年07月08日 10時24分07秒