80 likes | 191 Views
iPhone 勉強会 ~ Audio ~. 縣 禎輝. iPhone で音を鳴らす. iPhone でサウンドを再生する 方法 1) System Sound Service 30 秒以下でファイル容量の小さなサウンド CAF,MP3,WAV,AIFF など 2 ) AVAudioPlayer フレームワーク , 最も簡単な演奏方法 3) AudioQueue 大半 のフォーマットに 対応 , 扱い が難しい 4 ) AudioUnit シンセサイズなどには必須のサウンド演奏 方法 ある 程度はフレームワーク化されて いる
E N D
iPhone勉強会~Audio~ 縣 禎輝
iPhoneで音を鳴らす • iPhoneでサウンドを再生する方法 1)SystemSound Service 30秒以下でファイル容量の小さなサウンド CAF,MP3,WAV,AIFF など 2)AVAudioPlayer フレームワーク,最も簡単な演奏方法 3)AudioQueue 大半のフォーマットに対応, 扱いが難しい 4)AudioUnit シンセサイズなどには必須のサウンド演奏方法 ある程度はフレームワーク化されている 5)OpenGL もともとゲームのために用意されたAPIなので、自由度の高い再生ができる
iPhoneのサウンドフォーマット • iPhoneは、MIDI以外のほとんどのフォーマットに対応している。 • 標準で要求するフォーマットは、caf形式のファイルである。 • 他の形式は、QuickTimeプレイヤーが対応している。 • Mac上のシミュレーターで動作しても、実機では動作しないことがこれ以外にも多々あること留意しなくてはならない。
サウンド再生の準備 • CAFのリニアPCMへの変換の例 /usr/bin/afconvert –f caff –d LEI16 INPUT_FILE OUTPUT_FILE.caf • CAFのIMA4への変換の例 /usr/bin/afconvert –f caff –d ima4 INPUT_FILE OUTPUT_FILE.caf • CAFのAACへの変換の例 /usr/bin/afconvert –f caff –d ima4 INPUT_FILE OUTPUT_FILE.caf
System Sound Serviceの使い方 // オーディオファイルのパスを取得する NSURL* url; url = [NSURL fileURLWithPath: [[NSBundlemainBundle] pathForResource:@"C4" ofType:@"aif"]]; // システムサウンドを作成する AudioServicesCreateSystemSoundID((CFURLRef)url, &_soundC4); // サウンドを鳴らす AudioServicesPlayAlertSound(sound);
System Sound Serviceで楽器アプリ • 必要な13音のサウンドを読み込む - (void)viewDidLoad { // サウンドを読み込む NSURL* url; url = [NSURL fileURLWithPath:[[NSBundlemainBundle] pathForResource:@"C4" ofType:@"aif"]]; AudioServicesCreateSystemSoundID((CFURLRef)url, &_soundC4); url = [NSURL fileURLWithPath:[[NSBundlemainBundle] pathForResource:@"C#" ofType:@"aif"]]; AudioServicesCreateSystemSoundID((CFURLRef)url, &_soundCS); ……
playSound:アクションメソッドで再生 - (IBAction)playSound:(id)sender { // タグを取得して、サウンドを決定する SystemSoundID sound = (SystemSoundID)NULL; switch ([sender tag]) { case 100: sound = _soundC4; break; case 101: sound = _soundCS; break; case 102: sound = _soundD; break; case 103: sound = _soundDS; break; …… } // サウンドを鳴らす if (sound) { AudioServicesPlayAlertSound(sound); } }
System Sound Serviceの欠点 • 提供していない機能 • 音量の調整ができない • 鳴らした音を途中で止める事ができない