2009-07-15 8 views
1

私は2種類のサウンドを持つアプリケーションを持っています: 1.バックグラウンドの音が、次のビューまで永遠にループします。 2.別々に再生することも、一度に再生することもできます。フィンチを使ってiphoneで音を再生する

私はAVAudioPlayerを使用しようとしましたが、2つのクリップの間に非常に小さな沈黙の間隔がありました(これは、解決策が見つからなかった場合は返信してください)。 http://github.com/zoul/Finch/tree/master

ここには取引があります: 私はAVAudioPlayerを使用してFinchがこれらの背中合わせのクリップを再生する間、永遠にループするサウンドを再生しています。私はこれをやっています:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    soundEngine = [[Finch alloc] init]; 
/*** 
CLIPPED 
***/ 
} 
-(void) playclip:(id) sender { 
    NSString *fullPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"sitar.wav"]; 
    NSLog(@"Song is %@", fullPath); 
    clip = [[Sound alloc] initWithFile:fullPath]; 
    NSLog(@"Clip Length: %@", clip.length); 
    NSLog(@"Clip Playing ? : %d", clip.playing); 
    [clip play]; 
    NSLog(@"Played Clip"); 
} 

これは、gitリポジトリと同じように提供されているデモプロジェクトと同じコードです。しかし、いくつかの理由で、私は、コンソール上でこれを取得する:

Song is /Users/shoaibi/Library/Application Support/iPhone Simulator/User/Applications/17FBA26F-6047-4D56-9E45-ADAFE07B7234/Test.app/sitar.wav 
Failed to create OpenAL source, error code a004. 
Clip Length: (null) 
Clip Playing ? : 0 
Played Clip 

コンソール上に印刷されたディレクトリのlsがsitar.wavが正しい権限でそこにあることが明らかになりました。何が問題なの?

- (void)viewWillAppear:(BOOL)animated { 

    //Stop the background music before my ears bleed :P 
    d = [[UIApplication sharedApplication] delegate]; 
    if (d.bg.playing) 
    { 
     [d.bg stop]; 
     NSLog(@"Background music stoped"); 
    } 

} 

サウンドリソースを解放していないバックグラウンドサウンドAVAudioPlayerですか?

+0

AVAudioPlayerは問題ではないはずですが、FinchはAVAudioPlayerをうまく処理する必要があります。 Simulatorでコードを実行していますか? (ファイルパスはそう示唆しています。)シミュレータ上のOpenALに問題がありますので、デバイスを試してみる必要があります。 – zoul

+0

同じコードがデバイス上で失敗します。そのポストを書いているうちに、私はシミュレータを使用します。さらに、デモアプリケーションは問題なくシミュレータで動作します。 – Shoaibi

答えて

3

最新のFinchは、新しいSoundを初期化するときにOpenALが初期化されるかどうかをチェックします。 Finchの初期化を忘れた、または失敗したために現在のOpenALコンテキストが設定されていないと、より良いエラーメッセージが表示されます。試してみてください。初期化コードがバグのような場合があります。

0

私はviewWillAppearでサウンドクリップの割り当てを呼び出したときに同じエラーが発生しました。awakeFromNibがその処理を完了する前に呼び出されたようです。とにかく、あとで起こったようにallocをシフトして、後でそれを修正しました。

関連する問題