Tag: audiounit

iOS AUSampler audiounit – EXSaudio文件的文件path问题?

继苹果文档之后,我已经能够在我的iOS应用程序中成功地将GarageBand EXS采样器工具加载到AUS采样器中,例如重新创build我的app目录中的以下path: /Sampler Files/Funk Horn Section/nameofaudio.aif iOS在以下目录中查找audio文件: file:///Library/Application%20Support/GarageBand/Instrument%20Library/Sampler/Sampler%20Files/Funk%20Horn%20Section/' 但是,当我创build我自己的EXS文件时,这不起作用。 如何知道删除文件path的第一部分,如果GarageBand? 我甚至尝试创build我的EXS乐器,甚至在同一个GarageBand目录中创build,但它没有任何区别: Failed to locate sample '001%20VirusTI%20-%20SeaThr%2314A1B3.aif — file:///macSSD/Library/Application%20Support/GarageBand/Instrument%20Library/Sampler/Sampler%20Files/VirusTI%20-%20SeaThreeHS%20v2/' 我也尝试用文本编辑器手动编辑exs文件中的文件path,但没有任何工作。 EXS乐器在逻辑上performance良好。 但我的应用程序找不到它。 任何帮助不胜感激。

在iOS Audio Calling APP中使用循环缓冲区的原因是什么?

我的问题是非常自我解释。 对不起,如果它似乎太愚蠢。 我正在写一个iOS VoIP拨号程序,并检查了一些开源代码(iOSaudio呼叫应用程序)。 几乎所有的人都使用循环缓冲存储logging和接收的PCMaudio数据。 所以我想知道为什么我们需要在这种情况下使用循环缓冲区。 使用这种audio缓冲器的确切原因是什么? 提前致谢。

AudioUnits从Springboard返回后导致通用跳过

我在使用AudioUnits的应用程序中遇到问题。 所有应用程序audio(包括未通过AudioUnits播放的audio)将在退出到Springboard并返回到应用程序后开始跳过。 我把这个问题分解成了一个新的单独的testing应用程序。 这里是重复它的步骤: 开始使用AVAudioPlayer播放audio文件。 创build,删除,然后再创build一个AudioUnit 退出到跳板 返回到应用程序 来自AvAudioPlayer的audio将开始跳过 以下是我使用的一些代码: – (IBAction)restartAudioUnit { MySoundStream* audioUnitClass; audioUnitClass = Load(); [audioUnitClass release]; audioUnitClass = Load(); } 原谅长的代码转储,但audio单元是复杂的,我相当肯定,我只是设置或不正确地把他们closures。 MySoundStream类: OSStatus UnitRenderCB(void* pRefCon, AudioUnitRenderActionFlags* flags, const AudioTimeStamp* timeStamp, UInt32 busNum, UInt32 numFrames, AudioBufferList* pData){ OSStatus tErr = noErr; //Do Nothing return tErr; } @implementation MySoundStream -(void) dealloc { [self […]

苹果公司的语音处理audio单元(kAudioUnitSubType_VoiceProcessingIO)在iOS 5.1上打破

我正在为iPad编写一个VOIP应用程序(目前以2和3为目标)。 我最初使用Audio Unit API和kAudioUnitSubtype_RemoteIO单元编写audio代码。 这工作得很好,但不出所料,回声是一个问题。 我试图通过切换到使用kAudioUnitSubType_VoiceProcessingIO单位来使用内置的回声抑制。 这在iOS 6(iPad 3)上运行得非常好,但iOS 5.1(iPad 2)上的相同代码会在麦克风input上产生白噪声。 该文件只是提到它应该在iOS 3.0及更高版本中可用 iOS版本似乎是这里的重要区别。 我试着在两个iPhone 4S上运行应用程序,一个是iOS 6,听起来很好,另一个是iOS 5.1,听起来像是白​​噪声。 我的ASBD看起来像这样: typedef int16_t sample_t; #define AUDIO_BUFFER_SAMPLE_RATE 48000 #define FORMAT_FLAGS (kAudioFormatFlagsIsSignedInteger | kAudioFormatFlagsIsNonInterleaved) #define CHANNELS_PER_FRAME 1 … const size_t bytes_per_sample = sizeof(sample_t); const int eight_bits_per_byte = 8; AudioStreamBasicDescription streamFormat; streamFormat.mFormatID = kAudioFormatLinearPCM; streamFormat.mSampleRate = AUDIO_BUFFER_SAMPLE_RATE; streamFormat.mFormatFlags = FORMAT_FLAGS; […]

iPhone:AudioBufferList init和release

用3个AudioBuffers初始化(分配内存)和释放(释放)AudioBufferList的正确方法是什么? (我知道可能有不止一种方式来做这件事。) 我想使用这3个缓冲区来读取audio文件的连续部分,并使用audio单元进行播放。

我可以使用AVAudioEngine从文件中读取,处理audio单元并写入文件,比实时更快吗?

我正在使用一个iOS应用程序,使用AVAudioEngine来处理各种事情,包括将audiologging到文件,使用audio单元对该audio应用效果以及播放应用了效果的audio。 我使用一个水龙头也写输出到一个文件。 当这完成后,它会在audio播放时实时写入文件。 是否可以设置一个AVAudioEnginegraphics来读取文件,用audio单元处理声音,然后输出到文件,但比实时更快(即,硬件可以像处理它一样快)? 这个用例应该是输出几分钟的音效,而且我肯定不会等待几分钟才能处理。 编辑:这里是我用来设置AVAudioEngine的graphics,并播放声音文件的代码: AVAudioEngine* engine = [[AVAudioEngine alloc] init]; AVAudioPlayerNode* player = [[AVAudioPlayerNode alloc] init]; [engine attachNode:player]; self.player = player; self.engine = engine; if (!self.distortionEffect) { self.distortionEffect = [[AVAudioUnitDistortion alloc] init]; [self.engine attachNode:self.distortionEffect]; [self.engine connect:self.player to:self.distortionEffect format:[self.distortionEffect outputFormatForBus:0]]; AVAudioMixerNode* mixer = [self.engine mainMixerNode]; [self.engine connect:self.distortionEffect to:mixer format:[mixer outputFormatForBus:0]]; } [self.distortionEffect loadFactoryPreset:AVAudioUnitDistortionPresetDrumsBitBrush]; NSError* […]

如何使用iOS制作简单的EQ AudioUnit(低音,中音,高音)?

有没有人知道如何做一个简单的EQaudio单元(3乐队 – 低,中,高)与iOS? 我知道如何将iPod EQaudio单元添加到我的AUgraphics。 但它只能让您访问预设,我需要对EQ进行适当的控制。 我四处寻找一些教程或解释,但没有运气。 谢谢。 安德烈

如何录制混音器单元输出产生的声音(iOS Core Audio&Audio Graph)

我试图录制混音器单元输出产生的声音。 目前,我的代码基于苹果的MixerHost iOS应用程序演示: 混音器节点连接到audio广告的远程IO节点 。 我尝试在混音器输出上的远程IO节点input上设置一个inputcallback 。 我做错了什么,但是我找不到错误。 这是下面的代码。 这是在多声道混音器单元安装之后完成的: UInt32 flag = 1; // Enable IO for playback result = AudioUnitSetProperty(iOUnit, kAudioOutputUnitProperty_EnableIO, kAudioUnitScope_Output, 0, // Output bus &flag, sizeof(flag)); if (noErr != result) {[self printErrorMessage: @"AudioUnitSetProperty EnableIO" withStatus: result]; return;} /* can't do that because *** AudioUnitSetProperty EnableIO error: -1073752493 00000000 result = AudioUnitSetProperty(iOUnit, […]

从IO单元将audio写入磁盘

重写这个问题会更有成效。 我的问题是,我不能成功地写一个audio文件从远程IO单元磁盘。 我采取的步骤是 打开一个mp3文件并将其audio提取到缓冲区。 我根据图的属性设置了一个asbd以用于我的图。 我安装并运行我的graphics循环提取的audio和声音成功地出来扬声器! 我有困难的是从远程IOcallback采取audio采样,并将其写入磁盘上的audio文件,我正在使用ExtAudioFileWriteASync。 audio文件确实被写入,并且与原始的mp3有一些可听的相似之处,但是听起来非常失真。 我不确定问题是否存在 A)ExtAudioFileWriteAsync不能像io单元callback提供的那样快写样本。 要么 – B)我已经为extaudiofile refeferencebuild立了ASBD。 我想先保存一个wav文件。 我不确定是否在下面的ASBD中正确描述了这一点。 其次,我不确定创buildaudio文件时传递给inChannelLayout属性的值。 最后,我很不确定什么asbd用于kExtAudioFileProperty_ClientDataFormat。 我一直在使用我的立体声stream格式,但仔细看看文档说这一定是pcm。 这应该与remoteio的输出格式相同吗? 如果是这样,我错了将远程io的输出格式设置为stereostreamformat? 我意识到这个问题有很多,但是我有很多不确定因素,我似乎无法自行清理。 设置立体声stream格式 – (void) setupStereoStreamFormat { size_t bytesPerSample = sizeof (AudioUnitSampleType); stereoStreamFormat.mFormatID = kAudioFormatLinearPCM; stereoStreamFormat.mFormatFlags = kAudioFormatFlagsAudioUnitCanonical; stereoStreamFormat.mBytesPerPacket = bytesPerSample; stereoStreamFormat.mFramesPerPacket = 1; stereoStreamFormat.mBytesPerFrame = bytesPerSample; stereoStreamFormat.mChannelsPerFrame = 2; // 2 indicates stereo stereoStreamFormat.mBitsPerChannel […]