iPhoneアプリを終了します。新しい機能を追加します。記録システムサウンド、次に再生することができます

StackOverflow https://stackoverflow.com/questions/962252

質問

私はちょうどドラムアプリを作成しました。ユーザーはAudioToolboxからsystemsoundを使用して再生するには、短い音をトリガーする個々のボタンをタップします。 私は今、「記録」を言うUIButtonを追加したい、との使用が停止ボタンを押したときにクリックすると、すべてのSystemsoundsが再生されて記録し、します。その後、プログラムは、音を再生することができる必要があります。

私はこのことについてどのように行くのですか?短いを記録することができるというプログラムの全体のプロセスは、ユーザが個々のヒット領域をタップして誘発することに聞こえる?!

私に知らせてください。

おかげ

Pavan

役に立ちましたか?

解決

私は、iPhone自体の中のオーディオハードウェアに精通していないんだけど、それは任意の内部合成ルーチンを公開していませんので、再処理のためのアウトバウンドオーディオをキャプチャするために、そのことはできません場合、私は驚かないだろう。

私はあなたの代わりにドラムのアクションと時間間隔を記録し、元々演奏と同様にオーディオファイルを再生するために、あなたが直接プログラミングのオーディオハードウェアに慣れていない場合は特に、それがはるかに簡単にわかります疑います。また、これは直接オーディオを変更することなく、編集可能性という利点がある遅く、スピードアップ、および他のトリックでしょう。

ドラムがヒットしているとして、あなたはNSMutableArrayのに追加する必要があると思います。以下のサンプルは、drumType(例えばヒットさドラムボタンのタグ)、および次のドラムヒットに遅延(NSTimeInterval)であるdrumNextDelayに基づいています。そこにこれを処理するより多くの方法は明らかだが、その一例に過ぎます。

再生の大まかなバージョンは、次のようなもの、次の時間間隔で繰り返しperformSelectorを呼び出すことで実装することができます:

- (void) startPerformance {
self.drumIndex = -1;
[self performSelector:@selector(playDrumBeat) withObject:nil afterDelay:0];
}

- (void) playDrumBeat {
self.drumIndex++;
[self playDrum:[[drumBeats objectAtIndex:self.drumIndex] drumType]];
[self performSelector:@selector(playDrumBeat) withObject:nil afterDelay:[[drumBeats objectAtIndex:self.drumIndex] drumNextDelay]];
}

これはOSとタイミングの問題になりやすいことができますが、それが動作するかどうか、私は最初のカットのためにこのような何かを追求し、参照してくださいね。

バーニー

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top