私のアプリには 5 つのボタンがあり、各ボタンには 5 つの曲があります。メイン ビューでは、ビューに星 (5 つの端を含む) があります。ユーザーがボタンを星の最後までドラッグすると、曲を再生する必要があります。この同じリンクには 4 つあり、これらの曲を tmp ディレクトリに保存された着信音のようなファイルにミックスしたいと考えています。私はこれについて多くのことを試みましたが、問題に対する答えを得ることができません。
私が使用しているコードは次のとおりです。
- (void) doAudioCallback: (NSTimer *)timer {
NSString *resName1 = @"drum1.aif";
NSString *resName2 = @"drum2.aif";
NSString *resPath1 = [[NSBundle mainBundle] pathForResource:resName1 ofType:nil];
NSString *resPath2 = [[NSBundle mainBundle] pathForResource:resName2 ofType:nil];
NSString *tmpDir = NSTemporaryDirectory();
NSString *tmpFilename = @"MixedoftwoSongs.aif";
NSString *tmpPath = [tmpDir stringByAppendingPathComponent:tmpFilename];
OSStatus status;
if (status == OSSTATUS_MIX_WOULD_CLIP) {
} else {
NSURL *url = [NSURL fileURLWithPath:tmpPath];
NSData *urlData = [NSData dataWithContentsOfURL:url];
NSLog(@"wrote mix file of size %d : %@", [urlData length], tmpPath);
AVAudioPlayer *avAudioObj = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
self.avAudio = avAudioObj;
[avAudioObj prepareToPlay];
[avAudioObj play];
}
}