1

ドラムアプリを作成しました。ユーザーが個々のボタンをタップすると、AudioToolbox のシステム サウンドを使用して短いサウンドが再生されます。ここで、「録音」という UIButton を追加したいと思います。クリックすると、再生中のすべてのシステムサウンドが録音され、ユーザーが停止ボタンを押したときに録音されます。その後、プログラムはサウンドを再生できるはずです。

どうすればこれを行うことができますか?! ユーザーが個々のヒット領域をタップしてトリガーする短い音を録音できるプログラムの全プロセス?!

私にお知らせください

ありがとう

パヴァン

4

1 に答える 1

0

私は 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 でタイミングの問題が発生しやすい可能性がありますが、最初のカットとしてこのようなものを追求し、それが機能するかどうかを確認します.

バーニー

于 2009-07-03T06:14:21.223 に答える