gpt4 book ai didi

ios - 在iOS(Novocaine)上播放和停止声音样本

转载 作者:行者123 更新时间:2023-12-01 19:04:41 26 4
gpt4 key购买 nike

我正在尝试制作一个简单的Drumpad应用。该应用程序必须 super 快,并以尽可能小的延迟播放声音。前提是将音频样本存储在一个阵列中,当您敲击打击垫时会播放每个音频样本。

问题是某些打击垫是和弦(而不是鼓),因此需要在“Touch Up”上立即停止。

这是我尝试过的方法:

系统声音-非常易于实现, super 响应,无法在不破坏声音的情况下停止声音,声音不能超过30秒。

AV Framework -减慢速度的方法。

惊人的音频引擎-看起来不错,但是不确定设置相对于CoreAudio的优势是什么,因为设置相当复杂,因此我无法播放声音。也不确定延迟。

Novocaine -我暂时解决了这个问题,它看起来非常快,并且可以播放声音,但是一旦它们开始播放,我还看不到任何方法可以阻止它们。我不知道如何在不停止整个audioManager的情况下停止单个声音?

- (void) playSoundN:(int)padNum
{
__weak ViewController * wself = self;

NSURL *inputFileURL = [[NSBundle mainBundle] URLForResource:@"Drum - Kick" withExtension:@"wav"];

self.fileReader = [[AudioFileReader alloc]
initWithAudioFileURL:inputFileURL
samplingRate:self.audioManager.samplingRate
numChannels:self.audioManager.numOutputChannels];

[self.fileReader play];
self.fileReader.currentTime = 0.0;

[self.audioManager setOutputBlock:^(float *data, UInt32 numFrames, UInt32 numChannels)
{
[wself.fileReader retrieveFreshAudio:data numFrames:numFrames numChannels:numChannels];
NSLog(@"Time: %f", wself.fileReader.currentTime);
}];

[self.audioManager play];
}

看起来像一个简单的任务,以超低延迟启动和停止声音。

我应该使用上述方法之一还是只是硬着头皮潜入Core Audio Units。

谁有想法?

最佳答案

我刚刚制作了一款具有与您要完成的功能相似的功能的应用。我的建议:

  • 使用AVAudioPlayer(和AVAudioRecorder进行录制)。
  • 使用该类的prepareToPlay方法可以预加载声音并减少滞后。

  • 您可以在 AVFoundation文档中阅读有关类的更多信息:
    https://developer.apple.com/library/ios/DOCUMENTATION/AVFoundation/Reference/AVFoundationFramework/_index.html

    关于ios - 在iOS(Novocaine)上播放和停止声音样本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20483442/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com