问题标签 [audiounit]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - 如何为 AudioGraph 添加固定增益?
是否有可以在 AudioGraph 中应用固定增益的 AudioUnit?还有其他替代方法吗?
ios - 带有 RemoteIO 的虚拟仪器应用程序录音功能
我正在为 iOS 开发一个虚拟乐器应用程序,并尝试实现一个录音功能,以便该应用程序可以录制和播放用户使用乐器制作的音乐。我目前正在使用基于 OpenAL 的 CocosDenshion 声音引擎(我自己的一些技巧涉及淡入淡出等)。从我在网上的研究看来,我有两种选择:
- 记录用户的输入(即以什么音量播放了哪些音符),以便应用程序可以重新创建声音(但这不能共享/通过电子邮件发送)。
- 使用 AudioUnits & 特别是 RemoteIO 破解我自己的低级声音引擎,以便我手动混合所有声音并手动填充最终输出缓冲区,因此可以将所述缓冲区保存到文件中。这将能够通过电子邮件等共享。
我已经实现了一个 RemoteIO 回调来渲染输出缓冲区,希望它能给我以前在缓冲区中播放的数据,但可惜缓冲区总是全 00。
所以我的问题是:有没有比我上面的选项 2 更简单的方法来嗅探/收听我的应用程序发送给扬声器的内容?
在此先感谢您的帮助!
c++ - AudioUnit 中的输入缓冲区结构
我编写了一个简单的音频单元,它应该交换立体声源的左右声道。此代码的移植版本在 C 中适用于使用 BASS 库的命令行程序,但我无法让相同的代码在 Xcode 中为 audiounit 工作。
对于例如 {1, 2, 3, 4, 5, 6} 的缓冲区输入,我希望立体声反转为 {2, 1, 4, 3, 6, 5}。
我的代码以这种方式正确地反转了样本,但我听到的只是某种低通滤波,而不是样本的立体声反转。
我的输入缓冲区中的前 4 个值是: 0.000104 0.000101 0.000080 0.000113
输出为:0.000101 0.000104 0.000113 0.000080
我是否误解了输入/输出缓冲区的结构方式?
ios - 如何正确填充立体声 AudioBuffer
所以我正在使用 Apple 的MixerHost 示例代码来为立体声合成做一个基本的听力图设置。我在弄清楚如何填充缓冲区切片时遇到了一些麻烦。具体来说,我只在左声道输出音频,右声道是静音的:
这会在左声道播放一个正弦波......音高每 10 秒左右就会改变一次,这是我做错的另一个指标:]
我已经尝试过其他遍历数组的方法。这产生了远离正弦信号的有趣声音。有一次,我在两个通道上都有故障/断断续续的输出,这有点像成功。
如果我检查 AudioBuffer 结构,它确认有 2 个通道,每帧的字节大小为 4。所以每帧有两个 SInt16,对吗?一个用于左声道,一个用于右声道..它们应该是交错的?
请注意,我使用的流格式与 Apple 的示例不同,因为我不知道定点数学。
流格式设置如下:
所以我的问题是,我如何用数据填充像上面设置的立体声缓冲区,以便它正常工作?
谢谢!
iphone - 从 Springboard 返回后导致通用跳过的 AudioUnits
我在使用 AudioUnits 的应用程序中遇到问题。所有应用程序的音频(包括未通过 AudioUnits 播放的音频)将在退出 Springboard 并返回应用程序后开始跳过。
我将问题分解为一个新的单独测试应用程序。以下是重复它的步骤:
- 使用 AVAudioPlayer 开始播放音频文件。
- 创建、删除,然后再创建一个 AudioUnit
- 退出跳板
- 返回应用程序
- 来自 AvAudioPlayer 的音频将开始跳过
这是我使用的一些代码:
请原谅冗长的代码转储,但 AudioUnits 很复杂,我很确定我只是设置它们或不正确地删除它们。
MySoundStream 类:
如果有人能看到我对这个 AudioUnit 做错了什么,那将非常有帮助。
编辑:上传完整的源代码。这里
- 按播放声音(可能需要耳机)
- 按重启AudioUnit
- 返回跳板
- 重新进入 TestAudioUnit 应用程序
音频将跳过
iphone - AUmixer 后的 RemoteIO 回调
在 aumixer 完成之后,在 RemoteIO 上实现回调的正确方法是什么?
如果我使用;
结果 = AUGraphSetNodeInputCallback(mGraph, outputNode,1, &remoteIOCallback);
它没有调用我的函数
如果我使用..
结果 = AudioUnitSetProperty(mIONode, kAudioOutputUnitProperty_SetInputCallback, kAudioUnitScope_Input, 1, &remoteIOCallback, sizeof(remoteIOCallback));
它调用我的回调,但是当我尝试创建指向 ioData 的指针时
AudioSampleType *inData = (AudioSampleType *) ioData->mBuffers[0].mData;
它崩溃了。
我根本看不到问题所在。这是缓冲区的问题吗?但是我没有为缓冲区分配任何东西,只是一个指向它的指针。
干杯
iphone - iPhone:如何在 iPod 声音上播放声音?
我试图在 iPod 音乐上播放声音,但是当我进入我的应用程序时,iPod 声音会自动静音。我试过:
但可能是因为我使用 RemoteIO/Audio Units 播放我的声音,这没有效果(不确定这是否是原因,但它肯定什么都没做......声音仍然停止)
我错过了什么?
iphone - 启动 AVAssetReader 停止对远程 I/O AudioUnit 的回调
我正在使用 AVAssetReader 从 iPod 库中读取音频。(见这里)然后我获取读取缓冲区并通过 AudioUnit 播放它。我正在尝试在播放时折射代码以在音频中流式传输。但是,如果 AVAssetReader 正在运行,AudioUnit 将停止接收对其 kAudioUnitProperty_SetRenderCallback 的调用。
我已将代码简化为仅在 AudioUnits 回调中播放文件...
然后我调用此代码并且 AudioUnit 停止播放,不再调用 UnitRenderCB。
我正在使用与此处列出的相同的 AudioUnit 设置
AVAssetReader 是否使用 AudioUnit 系统?有没有办法让它们一起工作?
ios - 您将如何将 iPod 库资产连接到音频队列服务并使用音频单元进行处理?
我需要处理来自 iPod 库的音频。为 iPod 库读取资产的唯一方法是 AVAssetReader。要使用音频单元处理音频,它需要采用立体声格式,因此我有左右声道的值。但是当我使用 AVAssetReader 从 iPod 库中读取资产时,它不允许我以立体声格式将其取出。它以交错格式出现,我不知道如何分成左右音频通道。
要到达我需要去的地方,我需要执行以下操作之一:
- 让 AVAssetReader 给我一个立体声格式的 AudioBufferList
- 将交错数据转换为非交错数据以获得我需要的立体声输出
- 通过音频队列服务发送它以获得我需要的自动缓冲
我似乎受限于现有的公共 API 可以做什么以及 AVAssetReader 在读取 iPod 库资产时所支持的功能。你会怎么办?如何获得需要使用音频单元处理的内容?
我的另一个限制是我无法一次读取整首歌曲,因为它会填满内存并使应用程序崩溃。这就是我想使用音频队列服务的原因。如果我可以将 iPod 库中的资产视为立体声格式的流,那么我的所有要求都会得到满足。
这甚至可以做到吗?是否有任何文档、博客或文章可以解释如何做到这一点?
ios - AudioUnitInitialize 失败,错误代码 1852008051
我正在尝试使用 iOS 中的音频单元进行录制。
我将 AudioComponentDescription 中的 componentSubType 设置为kAudioUnitSubType_VoiceProcessingIO。
那么 AudioUnitInitialize 和 AudioOutputUnitStart 的错误代码都是1852008051('ncfs')。
我在文档中找不到此错误代码。
但是当我将kAudioUnitSubType_VoiceProcessingIO转为kAudioUnitSubType_RemoteIO时,一切都很好。
谁能告诉我从 VoiceProcessingIO 更改为 RemoteIO 时应该修改什么?