代码之家  ›  专栏  ›  技术社区  ›  Pavan

完成的iPhone应用程序:添加新功能。录制系统声音,然后能够播放

  •  1
  • Pavan  · 技术社区  · 17 年前

    我刚刚创建了一个drum应用程序。用户点击各个按钮,使用AudioToolbox中的systemsound可触发短声播放。

    我该怎么做?!程序的整个过程能够记录用户通过点击各个点击区域触发的简短声音?!

    请让我知道

    谢谢

    1 回复  |  直到 17 年前
        1
  •  0
  •   Barney Mattox    17 年前

    我不熟悉iPhone本身的音频硬件,但由于它不公开任何内部合成例程,如果无法捕获出站音频进行重新处理,我也不会感到惊讶。

    我想你会发现,如果你不熟悉音频硬件的直接编程,那么记录鼓的动作和时间间隔,并以与最初播放相同的方式重放音频文件会容易得多。这还有一个优点,即您可以在不直接更改音频的情况下编辑、减速、加速和其他技巧。

    当鼓敲响时,您需要附加到NSMutableArray。下面的示例基于一个drumType(例如,正在点击的鼓按钮的标记)和一个drumNextDelay,它是下一个鼓点击的延迟(NSTimeInterval)。显然有更多的方法来处理这个问题,但这只是一个例子。

    - (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]];
    }
    

    这可能会导致操作系统的时间问题,但我会首先考虑这样做,看看它是否有效。

    巴尼