问题标签 [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.

0 投票
3 回答
1521 浏览

iphone - 如何防止 iPhone 3GS 过滤低频(<150Hz)

我正在 iphone 3GS 上开发一个低音吉他音高检测应用程序。我发现我无法使用 RemoteIO 获得低于 150Hz 的声音数据。然而,低音吉他可能会产生低于 50hz 的音调。根据报告《iPhone 4 Headset Input Frequency Response》,http://blog.faberacoustical.com/2010/iphone/iphone-4-audio-and-frequency-response-limitations/ 150以下有急剧下降赫兹。

这里展示了我如何设置 AudioUnit。

这是回调函数。

要确定根本原因,

  1. 我修改了我的回调函数以绕过输入数据输出。
  2. 使用 Mac 产生白噪声
  3. 使用 iRig 将信号从 Mac 的耳机重定向到正在运行我的程序的 iPhone3Gs。
  4. 使用 iRig 将 iPhone 的输出重定向回 Mac。
  5. 在 Mac 上记录数据。 在此处输入图像描述 输出数据频谱如下图所示。 在此处输入图像描述

您可以看到 150Hz 的急剧下降。

为了确定问题是在输入端还是输出端,我将回调函数更改为忽略输入数据并输出白噪声。这是结果。 在此处输入图像描述 非常清楚,在 150 Hz 时没有下降。因此问题应该在输入端。

我认为这是硬件限制。但是我在同一台设备上尝试了应用程序“Amplitube”,关闭所有效果,输入白噪声并分析输出。它在 150Hz 时没有下降。这是结果。iPhone 3gs 上的放大管频率响应 这意味着脱落问题不是硬件限制。软件必须有某种方法可以避免这个问题。

有谁知道其中的秘密?

谢谢。

0 投票
1 回答
1475 浏览

iphone - 音频单元,设置格式失败并显示 -10581

我无法弄清楚为什么以下返回 OSStatus -10851:

适用于模拟器,但不适用于设备。

这是其余的代码:

0 投票
1 回答
1673 浏览

ios - Simultaneously generate multiple sine waves into sample buffer for audio unit (iOS)

Given an array (of changing length) of frequencies and amplitudes, can I generate a single audio buffer on a sample by sample basis that includes all the tones in the array? If not, what is the best way to generate multiple tones in a single audio unit? Have each note generate it's own buffer then sum those into an output buffer? Wouldn't that be the same thing as doing it all at once?

Working on an iOS app that generates notes from touches, considering using STK but don't want to have to send note off messages, would rather just generate sinusoidal tones for the notes I'm holding in an array. Each note actually needs to produce two sinusoids, with varying frequency and amplitude. One note may be playing the same frequency as a different note so a note off message at that frequency could cause problems. Eventually I want to manage amplitude (adsr) envelopes for each note outside of the audio unit. I also want response time to be as fast as possible so I'm willing to do some extra work/learning to keep the audio stuff as low level as I can.

I've been working with sine wave single tone generator examples. Tried essentially doubling one of these, something like:

Buffer[frame] = (sin(theta1) + sin(theta2))/2

Incrementing theta1/theta2 by frequency1/frequency2 over sample rate, (I realize this is not the most efficient calling sin() ) but get aliasing effects. I've yet to find an example with multiple frequencies or data sources other than reading audio from file.

Any suggestions/examples? I originally had each note generate its own audio unit, but that gave me too much latency from touch to note sounding (and seems inefficient too). I am newer to this level of programming than I am to digital audio in general, so please be gentle if I'm missing something obvious.

0 投票
1 回答
1010 浏览

c++ - Mac OSX 10.7 Lion 音频单元效果模板编译失败

我刚刚升级到 Mac OSX 10.7 Lion。首先,我讨厌新空间,我不喜欢无法访问比我的用户目录更深的任何目录,但让我们来看看这个问题。

我开发音频单元插件。我有一些代码在 XCode 4.0 中编译和运行完美(它们甚至已发布出售)。

但是在升级到 Lion 和 XCode 4.1 之后,Process 方法所在的主音频单元 .cpp 文件(我的名为 TestAU.cpp)中现在出现了两个主要的编译失败。下面是失败的代码。

我在解决这个故障时遇到了麻烦。任何帮助都会很棒。谢谢。

0 投票
2 回答
5730 浏览

ios - 在 iOS 上使用音频单元混合多个信号

我正在为 iPad 上的合成器制作控制器,我有 4 或 5 个信号要混合并发送到 remoteIO 渲染回调。现在我有两个选择:

我可以使用多通道混音器单元,但我不知道它在内部是如何工作的。它是否只是将缓冲区加在一起并除以缓冲区的数量?因为这意味着每个人的数量都会大大减少。

我阅读了http://www.vttoth.com/digimix.htmhttp://atastypixel.com/blog/how-to-mix-audio-samples-properly-on-ios/关于混合信号和我现在正在考虑在 remoteIO 回调中手动进行混合。

有什么建议么?

0 投票
1 回答
5534 浏览

iphone - 从 IO 单元将音频写入磁盘

重写这个问题更成功一点。

我的问题是我无法从远程 IO 单元成功地将音频文件写入磁盘。

我采取的步骤是

打开一个 mp3 文件并将其音频提取到缓冲区。我根据图表的属性设置了一个 asbd 以与我的图表一起使用。我设置并运行我的图表循环提取的音频和声音成功地从扬声器中出来!

我遇到的困难是从远程 IO 回调中获取音频样本并将它们写入我正在使用 ExtAudioFileWriteASync 的磁盘上的音频文件。

音频文件确实被写入并且与原始 mp3 有一些可听的相似之处,但听起来非常失真。

我不确定问题是否存在

A) ExtAudioFileWriteAsync 无法像 io 单元回调提供的那样快地写入样本。

  • 或者 -

B) 我为 extaudiofile 参考错误设置了 ASBD。我想先保存一个 wav 文件。我不确定我是否在下面的 ASBD 中正确描述了这一点。

其次,我不确定在创建音频文件时为 inChannelLayout 属性传递什么值。

最后,我非常不确定将什么 asbd 用于 kExtAudioFileProperty_ClientDataFormat。我一直在使用我的立体声流格式,但仔细查看文档说这一定是 pcm。这应该与 remoteio 的输出格式相同吗?如果是这样我将远程io的输出格式设置为stereostreamformat是错误的吗?

我意识到这个问题有很多,但我有很多不确定性,我似乎无法自己解决。

设置立体声流格式

使用立体声流格式设置 remoteio 回调

**录音设置**

编辑 1

我现在真的在黑暗中刺伤,但我需要使用音频转换器还是 kExtAudioFileProperty_ClientDataFormat 会处理这个问题?

编辑 2

我附上了2个音频样本。第一个是我循环播放并尝试复制的原始音频。第二个是该循环的录制音频。希望它可以给某人一个关于出了什么问题的线索。

原版mp3

mp3录音问题

0 投票
1 回答
774 浏览

objective-c - 如何托管 Apple 的 Pitch Shift Audio Unit 插件等

如何在自己的窗口中正确托管 PitchShift 音频单元插件?

我正在开发一个托管 Apple 系统提供的音频单元插件的 Mac 应用程序。在新的 OSX 10.7 Lion 中,一些插件更新了视图。PitchShift 就是其中之一。

PitchShift 和其他一些有新的旋钮来改变那里的参数。用鼠标转动旋钮时,旋钮下方会显示一个显示旋钮参数值的水平条。

松开旋钮后,甚至在关闭窗口后,此栏仍会保留在屏幕上。如果我单击其中一个旋钮,从而创建一个流氓值栏,并移动 PitchShift 视图所在的窗口,则该栏将停留在窗口以前所在的位置。如果此时我再次单击旋钮,则会出现一个新的条形图,但两个条形图都会随着不断变化的旋钮参数值信息而主动更新。每次我重复此过程时都会发生这种情况,屏幕上会停留更多条。

发生这种情况几次后,我的应用程序在 main.m 文件中的 NSApplicaionMain() 调用中以错误的访问权限退出。

我检查了逻辑 9,但这并没有发生在那里。该条似乎直接系在旋钮上,因此在您用鼠标松开旋钮后立即消失。

我将 PitchSHift 视图设置为专用 NSWindow 的 contentView。

Logic 如何防止这种情况发生,或者我该怎么做?

我试过查看参数值是否在 PitchShift 视图的子视图中出现,但它们似乎不是。

任何帮助将不胜感激。

编辑:当第一次出现值栏时,我在程序的控制台中得到以下输出: Circle and line do not intersect

所以我发现它正在使用核心动画CALayers。现在的问题是值栏层不是 PitchShiftView 层层次结构的一部分。换句话说,我可以找到构建 pitchShiftView 的所有其他层,但找不到值栏的层。这似乎是整个问题的开始。

0 投票
1 回答
226 浏览

objective-c - Apple 的 PitchShift Audio Unit 插件是否使用核心动画?

Apple 的 PitchShift Audio Unit 插件是否使用核心动画来显示 Mac OSX Lion 中参数旋钮的值栏?

我有这个问题。如何托管 Apple 的 Pitch Shift Audio Unit 插件等

0 投票
1 回答
954 浏览

ios - 在 iOS 上混合和均衡多个压缩音频流

正如标题所说,我要做的就是解码多个压缩的音频流/文件——它将从修改后的 MP4 文件中提取——并同时对它们进行实时 EQ。

我已经阅读了大部分 Apple 的文档。

我试过AudioQueues,但我无法进行均衡,因为一旦压缩音频进入,它就不会出来......所以我无法操纵它。

音频单元似乎没有任何组件来处理 AAC 和 MP3 的解压缩 - 如果我是对的,它的转换器只能处理从一种 LPCM 格式转换为另一种格式。

大约一个半月以来,我一直在尝试制定解决方案。

我现在在想,使用 3rd 方解码器(上帝帮助我;我不知道如何使用这些,源代码是希腊语;哦,有什么建议吗?:x),然后将解码后的 LPCM 输入AudioQueues 在回调时做 EQ。

也许我在这里遗漏了一些东西。建议?:(

0 投票
1 回答
185 浏览

objective-c - 如何查找与 nsview 相关的所有 CALayers?

我在 Mac OSX 10.7 Lion 中托管 Apple 的 Pitch Shift Audio Unit 插件。pitchShiftView 由 CALayers 组成:每个旋钮一个等。

使用我认为是 CALayer 的旋钮更改参数值时会出现值条,但它们不会显示在 CALayer 层次结构中。当它们应该消失时,它们会留在屏幕上,并最终导致我的应用程序因退出错误访问而崩溃。

我如何访问这些层,或者为什么它们不与层层次结构的其余部分绑定?