• ベストアンサー

再生位置を変更する方法を教えてください。

AUGraphを使用したミュージックプレイヤーを作成しています。 AUGraphStartにてオーディオを再生しているのですが、 UISliderで再生位置を表示して、ドラッグで変更出来るようにしたいのですが、 RenderCallbackのsourceAudioBufferDataPtrから再生位置は取得可能なのですが 再生位置を変更する方法が分かりません。 ご存知のかたいましたらアドバイスをお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

RenderCallbackもsourceAudioBufferDataPtrもあなたが定義した メソッドや変数だと思うので、どのような方法で音楽データを 読み込んで再生しているのか、詳しい説明がない限り直接的な アドバイスはできませんが、 例えば http://www.loopsessions.com/blog/?p=17 にあるような構造で再生しているのであれば、 ExtAudioFileRead関数で読み込んだデータを AUGraphのコールバック関数に引き渡す形で 再生しているので、UISliderで再生位置の変更を 指示されたら、ExtAudioFileSeek関数で 音楽データの読み込み位置を移動すればよい ということになります。 もし音楽データ全体があらかじめメモリ配列に読み込まれていて、 再生時にコールバック関数に引き渡すデータ位置を sourceAudioBufferDataPtrが示しているのであれば、 単純にそのsourceAudioBufferDataPtrの値を変更するだけで うまくいきそうな気がしますが、もしそれをやっても うまくいかないため質問しているのであれば、そのあたりの 音楽データ読み込み構造を調べる必要があると思います。

cocoro99
質問者

お礼

もう一度、回答いただいた内容を読み直していたのですが、 回答に >ExtAudioFileRead関数で読み込んだデータをAUGraphのコールバック関数に引き渡す形 と、あります。 今回、イコライザを使用したくて補足の構成でAUGraphを構成しています。 この中に、Extended Audio File Services はつながらないものだと思っていたのですが、 このような構成の中に組み込めるのでしょうか? 組み込めるのであれば、おっしゃる通りExtAudioFileSeek関数を使えるのですが。 補足を含めて長文ですみませんが、よろしくお願いします。

cocoro99
質問者

補足

アドバイスありがとうございます。 Extended Audio File Servicesは使用していません。 現在、以下の構成でAUNodeをつなげてAUGraphStartにて再生しています。 (実際にはkAudioUnitType_FormatConverterを挟んでいます。) kAudioUnitType_Generator kAudioUnitSubType_AudioFilePlayer ↓ kAudioUnitType_Effect kAudioUnitSubType_AUiPodEQ ↓ kAudioUnitType_Effect kAudioUnitSubType_Delay ↓ kAudioUnitType_Mixer kAudioUnitSubType_MultiChannelMixer 質問にありました、RenderCallbackとは AUGraphAddRenderNotify(_AUGraph, RenderCallback, (__bridge void *)(self)); にて登録したコールバックとなります。 そもそも、このコールバックでは既にレンダリングが終わっているようなので、もっと前の段階の kAudioUnitType_GeneratorのkAudioUnitSubType_AudioFilePlayer等に対して処理する必要があるのでしょうか? 回答にありました、sourceAudioBufferDataPtrについてはAppleのサンプル(https://developer.apple.com/library/ios/samplecode/iPhoneMixerEQGraphTest/Introduction/Intro.html)を流用しているのですが、まだまだ理解出来ていないため 色々調べたのですが、この変数に対して、どこで書き込みが行われているかを、まだ見つける事が出来ていません。 まだまだ知識不足で、とんちんかんな感じですが、少しずつ進めていきたいと思います。 このような状況ですが、何か参考になる情報何どあればご教授いただければ幸いです。

関連するQ&A