标签: audiounit

来自AudioUnitRender的错误-50

我在以下上下文中从AudioUnitRender收到错误-50(无效参数).我正在使用这个Pitch Detector示例应用程序作为我的起点,它运行正常.我项目中唯一的主要区别是我也使用远程I/O单元进行音频输出.音频输出工作正常.这是我的输入回调和我的初始化代码(为简洁起见,删除了错误检查).我知道这很多但错误-50确实给了我很少的信息,问题可能在哪里.

输入回调:

OSStatus inputCallback( void* inRefCon, 
                            AudioUnitRenderActionFlags  *ioActionFlags, 
                            const AudioTimeStamp        *inTimeStamp, 
                            UInt32                      inBusNumber, 
                            UInt32                      inNumberFrames, 
                            AudioBufferList             *ioData) {

    WBAudio* audioObject= (WBAudio*)inRefCon;

    AudioUnit rioUnit = audioObject->m_audioUnit;
    OSStatus renderErr;
    UInt32 bus1 = 1;

    renderErr = AudioUnitRender(rioUnit, ioActionFlags, 
                                inTimeStamp, bus1, inNumberFrames, audioObject->m_inBufferList );
    if (renderErr < 0) {
        return renderErr; // breaks here
    }

    return noErr;
} // end inputCallback()
Run Code Online (Sandbox Code Playgroud)

初始化:

- (id) init {

    self= [super init];
    if( !self ) return nil;

    OSStatus result;

    //! Initialize a buffer list …
Run Code Online (Sandbox Code Playgroud)

audio objective-c core-audio audiounit ios

7
推荐指数
1
解决办法
3707
查看次数

如何将AudioFilePlayer AudioUnit连接到3DMixer?

我正在尝试将AudioFilePlayer AudioUnit连接到AU3DMixerEmbedded Audio Unit,但我没有成功.

这是我正在做的事情:

  1. 创建一个AUGraphNewAUGraph()

  2. 打开图表

  3. 初始化图表

  4. 添加3个节点:

    • outputNode: kAudioUnitSubType_RemoteIO
    • mixerNode: kAudioUnitSubType_AU3DMixerEmbedded
    • filePlayerNode: kAudioUnitSubType_AudioFilePlayer
  5. 连接节点:

    • filePlayerNode - > mixerNode
    • mixerNode - > outputNode
  6. 配置filePlayer音频单元以播放所需的文件

  7. 启动图表

这不起作用:它在AUGraphInitialize上出错,错误为10868(kAudioUnitErr_FormatNotSupported).我认为问题是由于filePlayer和混音器之间的音频格式不匹配.我认为这是因为: - 如果我注释掉将filePlayerNode连接到mixerNode(AUGraphConnectNodeInput(_graph, filePlayerNode, 0, mixerNode, 0))并注释掉第6步,那么就不会报告任何错误.- 如果我将filePlayerNode直接连接到outputNode(AUGraphConnectNodeInput(_graph, filePlayerNode, 0, outputNode, 0))来替换步骤3,则播放音频.

在将filePlayerNode连接到mixerNode时我缺少哪些步骤?

这是完整的代码.它基于Apple的示例代码和我从互联网上找到的其他样本.(AUGraphStart后称):

- (id)init
{
    self = [super init];
    if (self != nil)
    {
        {
            //create a new AUGraph
            CheckError(NewAUGraph(&_graph), "NewAUGraph failed");        
            // opening the graph opens all contained audio units but does …
Run Code Online (Sandbox Code Playgroud)

cocoa-touch core-audio audiounit ios

7
推荐指数
1
解决办法
3006
查看次数

将远程IO音频单元的输出写入脱机文件

我有一个程序,使用连接到远程IO音频单元的AUSampler生成声音.AUSampler由在定时循环中触发的预先记录的事件控制.我想将结果声音写入文件.

关于在IO单元的渲染回调中写入文件还有一些其他问题:

但这些都涉及实时编写数据.有没有办法离线渲染文件所需的时间比播放文件少?

core-audio audiounit ios

7
推荐指数
1
解决办法
1568
查看次数

如何在内置输入(OSX Core Audio/Audio Unit)上设置输入电平(增益)?

我有一个OSX应用程序,使用音频单元记录音频数据.音频单元的输入可以设置为任何可用的输入源,包括内置输入.问题是,我从内置输入获得的音频经常被剪裁,而在诸如Audacity(甚至是Quicktime)之类的程序中,我可以调低输入级别而不会剪辑.

当然,将样本帧乘以一小部分是行不通的,因为我的体积较小,但样本本身在输入时仍然被剪裁.

如何设置内置输入的输入电平或增益以避免剪切问题?

macos objective-c core-audio audiounit

7
推荐指数
1
解决办法
3239
查看次数

在iOS中使用Core Audio同时播放和录制

我需要使用Core Audio同时播放和录制.我真的不想使用AVFoundation API(AVAudioPlayer + AVAudioRecorder)这样做,因为我正在制作音乐应用程序,并且不会出现任何延迟问题.

我查看了Apple的以下源代码:
aurioTouch
MixerHost

我已经查看过以下帖子:
iOS:同步录制和播放的示例代码同时录制和播放
音频

我仍然不清楚如何使用Core Audio同时播放和录制相同的内容.任何有关如何实现这一目标的指示都将非常值得注意.任何示例源代码的任何指针也将有很大帮助.

iphone core-audio audioqueueservices audiounit ios

7
推荐指数
1
解决办法
5988
查看次数

令人惊叹的音频引擎如何将滤波器应用于麦克风输入

我试图制作卡拉OK应用程序,记录文件和麦克风的背景音乐.我还想为麦克风输入添加滤镜效果.

我可以使用惊人的音频引擎sdk完成上述所有事情,但我无法弄清楚如何将麦克风输入添加为频道,以便我可以应用滤镜(而不是背景音乐.)

任何帮助,将不胜感激.

我目前的录音代码:

- (void)beginRecording {
// Init recorder
 self.recorder = [[AERecorder alloc] initWithAudioController:_audioController];
NSString *documentsFolder = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,   NSUserDomainMask, YES) 
                               objectAtIndex:0];
  NSString *filePath = [documentsFolder stringByAppendingPathComponent:@"Recording.aiff"];
// Start the recording process
NSError *error = NULL;
if ( ![_recorder beginRecordingToFileAtPath:filePath 
                                   fileType:kAudioFileAIFFType 
                                     error:&error] ) {
   // Report error
   return;
}
// Receive both audio input and audio output. Note that if you're using
// AEPlaythroughChannel, mentioned above, you may not need to receive the input again.
[_audioController addInputReceiver:_recorder];
[_audioController addOutputReceiver:_recorder];
}
Run Code Online (Sandbox Code Playgroud)

audio-recording audiounit ios

7
推荐指数
1
解决办法
1822
查看次数

在AUHAL上设置采样率

我正在使用Audio Unit Framework在mac os x上开发VOIP应用程序.在我的程序中,我设置了输入AUHAL并使用默认流格式(44.1kHz,32位/通道)从麦克风中捕获音频.在这种情况下,我的程序工作正常.

这是代码:

//The default setting in my program
CheckError(AudioUnitGetProperty(m_audCapUnit,
                                        kAudioUnitProperty_StreamFormat,
                                        kAudioUnitScope_Output,     //the value is 0
                                        inputBus,           //the value is 1
                                        &m_audCapUnitOutputStreamFormat,
                                        &propertySize),
                   "Couldn't get OutputSample ASBD from input unit") ;  

    //the inOutputSampleRate is 44100.0
        m_audCapUnitOutputStreamFormat.mSampleRate = inOutputSampleRate ; 

CheckError(AudioUnitSetProperty(m_audCapUnit,
                                        kAudioUnitProperty_StreamFormat,
                                        kAudioUnitScope_Output,
                                        inputBus,
                                        &m_audCapUnitOutputStreamFormat,
                                        propertySize),
                   "Couldn't set OutputSample ASBD on input unit"); 

//
Run Code Online (Sandbox Code Playgroud)

由于我正在开发VOIP应用程序,默认格式(44.1kHz,32位/通道)不适合我的程序,所以我想将采样率更改为8kHz.我写了这段代码来改变程序中的格式:

//......
    inOutputFormat.mSampleRate = 8000.  ;
    inOutputFormat.mFormatID = kAudioFormatLinearPCM ;
    inOutputFormat.mChannelsPerFrame = 2 ;
    inOutputFormat.mBitsPerChannel  = 16 ;
    inOutputFormat.mBytesPerFrame = 2 ;
    inOutputFormat.mBytesPerPacket = …
Run Code Online (Sandbox Code Playgroud)

macos voip core-audio sample-rate audiounit

7
推荐指数
1
解决办法
2531
查看次数

适用于iOS的AudioUnit Echo取消内置功能

目前我正在开发一款使用iPad麦克风捕捉声音的iOS应用程序.同时,通过iPad扬声器播放声音.由于目标是处理隔离的输入声音,因此应删除(取消)扬声器反馈.我查找了一些与AudioToolbox可能性相关的文档.我发现AudioUnit可以执行回声消除等内置功能.但是,我没有设法正确配置我的音频图表以获得成功的性能.

我将不胜感激任何建议,示例代码,教程参考或推荐的参考书目.

非常感谢你,

普约尔

audiounit ios echo-cancellation

7
推荐指数
0
解决办法
5065
查看次数

如何使用AVAudioPlayer或AVPlayer播放PCM数据/缓冲区?

如何使用AVAudioPlayer或AVPlayer播放PCM数据/缓冲区?我知道,我可以使用AudioUnit/AudioQueue播放PCM数据/缓冲区,方法是将数据输入播放回调方法.但是不想这样做.

我在谷歌上搜索了很多,但找不到任何有用的答案或任何示例代码来执行此操作.任何帮助将受到高度赞赏.

objective-c core-audio audiounit ios ios7

7
推荐指数
1
解决办法
2914
查看次数

如何从 Python 中调用音频插件?

我注意到一些开源 DAW,例如 Ardor 和 Audacity,能够访问用户在其系统上安装的音频插件(例如 VST、AU)。这让我觉得“应该有一种方法”来做到这一点。

具体来说,我想从我自己用 Python 编写的音频处理应用程序中调用一些插件。是否有推荐的方法或库可以用于此目的?

我自己的搜索几乎没有结果。我见过的唯一相关帖子是这个,但它已经有 5 年历史了。有人提到使用JUCE并且有一些名为PyJUCE 的2 岁 Python 绑定(似乎是为 Windows 设置的),但到目前为止我还没有得到任何工作,主要是因为我对纯粹的适应能力很差”批量”的 JUCE。

有什么建议?

也许唯一剩下的选择是从头开始编写自己的 VST host,然后像从 Python 内部调用任何外部 C++ 代码一样继续。我只是想在重新发明轮子之前先问一下,因为通常情况下“无论你想做什么,其他人已经为它编写了一个 Python 包”。;-)

python audio plugins vst audiounit

7
推荐指数
3
解决办法
2584
查看次数