我能够为 avaudioplayer 和 avaudiorecorder 创建我想要的确切功能,但当然遇到了延迟问题。因此,在阅读了网络上的几乎所有文章并查看了大量示例代码之后,我仍然不确定如何实现以下目标:
因此,使用 avaudioplayer 和 avaudiorecorder 我只是使用 audacity 创建了一个“caf”,节拍器设置为正确的 bpm(为应用程序设置了 bpm)。然后我设置和播放 avaudioplayer 并使用 audiodidfinishsuccessfully 委托(delegate)方法,执行一些逻辑来启动录音机,重新启动播放器,保持循环计数等以关闭录音和音频。
正如我所提到的,我几乎能够实现我所追求的用户体验,但延迟问题是 Not Acceptable 。
我一直在使用音频单元和远程 IO,并设置了一个带有播放回调和录音机回调等的项目,但现在面临如何根据上述描述进行工作的问题。我正在尝试为初学者解决以下问题:
谁能给我一些想法或指出我正确的方向。正如我所提到的,我已经做了大量的研究,包括购买核心有声读物,阅读 atastypixel.com、timbolstad.com 等上的每一篇文章,并浏览了苹果文档。
在此先感谢您的帮助。
最佳答案
我启动了一个 NSTimer。使用基于 BPM(每分钟节拍数)/60 的值。因此,如果用户想要记录带有计数的 2 小节文件,可能会执行以下操作:
//timer interval=100BPM/60secs per minute
timerInterval=100/60;
metroTimer = [NSTimer scheduledTimerWithTimeInterval:timerinterval target:self selector:@selector(blinkMetroLight) userInfo:nil repeats:YES];
- (void)blinkMetroLight
{
if(beatNumber == 0)
{
beatNumber = 1;
}
else if (beatNumber == 5)
{
[self audioProcessorStart];
}
if (beatNumber == 8)
{
[self audioProcessorStop];
[metroTimer invalidate]; metroTimer = nil;
}
beatNumber++
}
关于ios - 使用远程 IO 对设定长度的节拍器进行录音,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10688286/