首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用远程IO对固定长度的节拍器进行记录

用远程IO对固定长度的节拍器进行记录
EN

Stack Overflow用户
提问于 2012-05-21 15:38:36
回答 1查看 448关注 0票数 4

我能够创建我想要的音频播放器和录音机的确切功能,但当然也遇到了延迟问题。因此,在阅读了web上的几乎每一篇文章并回顾了大量的示例代码之后,我仍然不知道如何实现以下目标:

pre-roll/count-in

  • User pre-roll)

  • The

  • 用户选择记录2小节长(每条4拍),然后单击“记录节拍器”( record

  • )。节拍器的启动以4拍(第一个节拍的重音)

  • 计算。应用程序在下一个小节的开始自动开始录制,应用程序在第三个小节的末尾自动关闭记录(2条+pre-roll)

  • The用户可以播放或删除记录,然后重新启动。

G 213)

因此,通过使用avaudioplayer和aveaso记录器,我简单地创建了一个'caf‘,使用的是在正确的bpm上设置一个节拍器的大胆(bpm是为应用程序设置的)。然后,我设置并播放avaudioplayer,并使用avaudioplayer委托方法,执行一些逻辑来启动记录器,重新启动播放机,保持循环计数等来关闭录音和音频。

正如我提到的,我基本上能够获得我所追求的用户体验,但是延迟问题是不可接受的。

我一直在使用音频单元和远程IO,并设置了一个带有回放回调和记录器回调等的项目,但现在面临的问题是如何在上面描述的基础上工作。我试着为初学者做以下工作:

  1. 如果我创建了一个1节拍的咖啡馆文件,我如何利用音频单元和远程IO播放x次节拍,然后停止?
  2. 如何进行预滚,并在4次

之后启动录音回调。

有人能给我一些想法或者指出正确的方向吗?正如我所提到的,我已经做了一堆研究,包括购买核心音频书,阅读每一篇关于atastypixel.com、timbolstad.com等的文章,并在苹果文档中搜索。

提前谢谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2014-03-21 16:12:37

我启动了一个NSTimer。使用基于BPM (每分钟Beats)/ 60的值。因此,如果用户想要记录带有something的2 bar文件,可以这样做:

代码语言:javascript
复制
//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++ 
    }
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10688286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档