问题标签 [avaudioengine]
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 - 来自 AVAudioPCMBuffer 的频谱图在 Swift 中使用 Accelerate 框架
我正在尝试从AVAudioPCMBuffer
Swift 中生成频谱图。我在 an 上安装一个水龙头AVAudioMixerNode
并接收带有音频缓冲区的回调。我想将缓冲区中的信号转换为[Float:Float]
字典,其中键表示频率,值表示相应频率上音频的幅度。
我尝试使用 Apple 的 Accelerate 框架,但我得到的结果似乎令人怀疑。我确定这只是我转换信号的方式。
我查看了这篇博文以供参考。
这是我所拥有的:
我的问题是
- 如何将
buffer.floatChannelData
to转换UnsafePointer<DSPComplex>
为传递给vDSP_ctoz
函数?是否有不同/更好的方法来做到这一点,甚至可以绕过vDSP_ctoz
? - 如果缓冲区包含来自多个通道的音频,这会有所不同吗?缓冲音频通道数据是否交错时有何不同?
- 如何将
fft
数组中的索引转换为以 Hz 为单位的频率? - 还有什么我可能做错了吗?
更新
谢谢大家的建议。我最终按照接受的答案中的建议填充了复杂的数组。当我绘制值并在音叉上播放 440 Hz 音调时,它会准确记录它应该在哪里。
这是填充数组的代码:
然后该channelSamples
数组为每个通道保存单独的样本数组。
为了计算大小,我使用了这个:
ios - 如何使用 AVAudioSession 从音乐中删除/降低人声
我正在开发需要在播放音乐时录制音频的应用程序。我可以成功地用音乐录制声音。但我无法从音乐中删除人声。如果我能在人声上升时降低音量,那也很棒。
我在播放音乐时使用 AVAudioSession、AVAudioPlayerNode 进行录制。
任何帮助将不胜感激。
ios - 在 AVAudioEngine 上播放音乐序列
AVAudioEngine
有一个musicSequence
可以设置的属性。但是,我很难弄清楚如何玩它?我尝试使用startAndReturnError
但无济于事
ios - 如何正确配置 AVAudioUnitEffects 链
以下代码配置 iOS 音频引擎以创建使用一种声音字体设置的采样器(为了讨论简单)。然后我使用这些样本来播放 MIDI 音符,一切都很好,直到我尝试引入一系列标准效果(失真 -> 延迟 -> 混响)。
如果采样器的输出只是直接连接到音频引擎 MainMixerNode 它就可以工作。如果我将采样器连接到失真效果(链中的第一个效果),那么一旦我尝试播放第一个 MIDI 音符,我就会收到错误“AVAudioUnitMIDIInstrument.mm:103: -[AVAudioUnitMIDIInstrument startNote:withVelocity:onChannel:]:错误-10867"
注意:我在 Mac 上使用 Xamarin 进行编码,因此以下内容可能看起来不熟悉,但我希望代码可读性足以帮助您。
问题只是我在初始化我的效果/或其链时哪里出错了?
在此先感谢,克里斯
ios - 以编程方式淡出 AVAudioPlayerNode 的音量
我有一个带有 AVAudioPlayerNode 的 AVAudioEngine 设置,它正在播放一些背景音乐。
我正在尝试找到一种最佳方法来在 2 秒的时间范围内在节点上创建音量淡出。我正在考虑使用 CADisplayLink 来做到这一点。我想知道是否有人有这种情况的经验并且可以就他们的方法向我提供建议?
macos - AVAudioEngine:有什么方法可以控制缓冲区大小(延迟)?
我编写了一个 V3 AudioUnit 并使用AVAudioUnit
. 我的渲染回调是用 512 帧调用的,这对于我的应用程序(合成器)来说延迟太高了。
有没有办法AVAudioEngine
设置处理缓冲区大小?还是我需要直接使用CoreAudio?
注意:这是在 OS X 10.11 上。
ios - 如何指定 AVAudioEngine Mic-Input 的格式?
我想使用AVAudioEngine
和用户麦克风录制一些音频。我已经有一个工作示例,但只是不知道如何指定我想要的输出格式......
我的要求是,AVAudioPCMBuffer
正如我所说的那样,我需要它目前所做的......
我需要添加一个单独的节点来进行一些转码吗?我找不到太多关于该问题的文档/示例...
在音频方面,我也是个菜鸟。我知道我想要NSData
包含最大采样率为 16000 的 PCM-16bit(8000 会更好)
这是我的工作示例:
如果我改变格式让'说
那么如果会产生一个错误,说采样率需要与 hwInput 相同...
很感谢任何形式的帮助!!!
编辑:我刚刚发现AVAudioConverter
,但我也需要与 iOS8 兼容......
ios - AVAudioEngine 麦克风浮点数据
我正在尝试使用 AVAudioEngine 获取实时麦克风输入的浮点数据。在 fft 之后进行 fft 和特殊算法。
当我编译代码时,我在控制台上变成了这个输出:0x0000000000000000
我做错了什么?非常感谢您的帮助
这是我获取浮点数据的代码:
ios - 如何在 AudioEngine OutputNode 上安装 Tap
我正在尝试从AudioEngine
OutputNode
To保存已处理的音频AVAudioFile
。
到目前为止,我所知道的是它可以使用 Tap 来完成,但不知道如何。
我想知道如何安装 Tap On AudioEngine
OutputNode
。