如果这听起来像是一个愚蠢的问题,我深表歉意,我是 VST 开发的新手。我正在尝试使用 JUCE 框架构建一个插件,目前我正在尝试使用正弦波 .wav 文件对其进行测试。当我在 Audacity 中打开 .wav 文件时,它告诉我它是 44100Hz 并且是 32 位 float 。当我将同一个文件加载到 matlab 中时,前三个样本类似于 0.00、0.0443、0.0884... 但是,当我将同一个文件放入 Ableton 和 Reaper 中并尝试单步执行代码时,我找到了前三个样本相同的文件是 0.00000000、0.00012068315、0.00048156900... 当我进入 VS 中的内存并在 32 位浮点 View 中查看时,我看到了这一点。为什么我的样本值这么小?
我的问题是我需要音频具有与 Matlab 中相同的样本值,这样我的算法才能工作。显然发生了我无法控制的转变。任何人都可以阐明这个问题以及我应该如何解决它。看起来可能是缩放问题。 Ableton 正在 32 位模式下运行,我的 VST 正在编译为 32 位。
如果有帮助,我还可以提供更多示例。
谢谢
最佳答案
问题是因为 Ableton 和 Reaper 将 32 位音频转换为 16 位音频。我能够通过将 sine.wav 加载到 Ableton 并以 16 位导出它来检查这一点。然后,我将该文件加载到 Matlab 中,并获得了如上所示的较小样本。我的下一个问题是想办法在 VST 中将 16 位音频转换为 32 位音频。
关于c++ - VST 音频输入值与 Matlab 中完全不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38087315/