- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试通过将一些简单的开源 VST(用 C++ 编写)移植到 VB.NET 语言来了解 DSP 的工作方式。
(我对C语言不是很熟悉,只能看。)
虽然我把VST的处理代码一行一行的复制过来,但是还是不行,声音效果很差。
不知道是我翻译的代码有误还是VST输入值范围和我的不一样。
我发现VST里面的processReplacing方法写的几乎都是一样的格式
<!-- language: cpp -->
void Compressor::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrames) {
float *inputsL = inputs[0];
float *inputsR = inputs[1];
float *outputsL = outputs[0];
float *outputsR = outputs[1];
while(--sampleFrames >= 0) {
float inL = *inputsL++;
float inR = *inputsR++;
// some code here
*outputsL++ = outL;
*outputsR++ = outR;
}
}
我把它翻译成 VB.NET 是这样的:
<!-- language: vb -->
Public Sub processReplacing(inputs As Single(), count As Integer)
For i = 0 To count - 1 Step 2
inL = inputs(i)
inR = inputs(i + 1)
' some code here
inputs(i) = outL
inputs(i + 1) = outR
Next
End Sub
我的 VB.NET 输入值介于 [-1..1](32 位 IEEE 浮点格式)之间,并且是一维数组(L、R、L、R...)
我想澄清两件事:
最佳答案
您使用的是单维数组,但 processReplacing C++ 代码有两个(输入/输出)多维数组。每个 channel (L/R) 位于不同的(子)数组中,样本是连续的,范围为 [-1.0,1.0]
float *inputsL = inputs[0];
float *inputsR = inputs[1];
float *outputsL = outputs[0];
float *outputsR = outputs[1];
这些从多维数组中提取 channel 。像这样的语句:
*outputsL++
将递增索引并访问值(在一条语句中 - 那是 C++ ;-)
您应该使用 VST.NET 来处理所有这些细节,这样您就可以专注于您要学习的 DSP 逻辑。
希望对你有帮助马克
关于c++ - 什么是 VST 输入值范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29001439/
我开发了一个简单的 VST 插件。该插件有一个带有音频样本的内部缓冲区,如果音频流被中断,则应清除该缓冲区。 现在,如果我在某些媒体播放器中使用这个插件(比如带有 VST 包装器插件的 Foobar)
Coq 8.10.1 的 VST(验证软件工具链)2.5v 库遇到问题: VST 的最新工作提交出现错误,即“不支持内部结构复制”。最小示例: struct foo {unsigned int a;}
作为 Objective C 开发人员,是否有库或其他智能“简单”方法可以让 VST 插件在 iOS 上运行? (如果您有任何建议,请改进标记。) 最佳答案 如果您有源代码,理论上您可以将其插入 Au
我想制作(或学习如何制作)VST 插件。有专门的 SDK 吗?如何产生 .vst 而不是 .exe?另外,如果有人想为 Logic Pro 制作音频单元,那是怎么做的?谢谢 最佳答案 从 link 开
下面两行代码到底会发生什么? vst1.64 {d8, d9, d10, d11}, [r4:128]! vst1.64 {d12, d13, d14, d15}, [r4:128] 更一般地说,我想
我使用的是 VST 2.5 和 Coq 8.11.0 执行 forward_call 时出错具有非标准调用约定的函数。 最小代码示例: struct t { int t_1; int t_2;
我从 Hypersonic 2 VST 仪器上依稀记得这一点。 基本上,它是一个普通的 VST 乐器,但如果您的项目中有它,您可以将其 MIDI 输出(等于输入,除非您有变调或如此活跃)分配给另一个
我必须插入一个预先存在的软件,管理 ASIO 音频流,一个简单的 VST 主机。尽管缺少一些文档,我还是设法做到了,但是一旦我加载了插件,我就会得到一个严重失真的音频信号。 我正在使用的 VST 可以
我一直在研究音频单元插件。因为我希望 Windows 上的人能够使用该插件,所以我决定尝试使用 VST3 SDK。我不想使用 JUCE,因为我最终可能会出售该产品并且以后不想住在纸板箱中(JUCE 商
我正在实现一种音频算法来将音符与和弦录音(如旋律)分开。我的计划是,让它成为一个 VST 插件。研究文档后,我很难弄清楚如何实现非实时任务。 所需的任务是加载波形文件并对其进行非实时分析,然后才能对其
我正在尝试通过将一些简单的开源 VST(用 C++ 编写)移植到 VB.NET 语言来了解 DSP 的工作方式。 (我对C语言不是很熟悉,只能看。) 虽然我把VST的处理代码一行一行的复制过来,但是还
我计划为我正在开发的跨平台应用程序实现 VST 主机。 我应该选择哪个版本的 VST,VST-2 还是 VST-3?似乎 VST-2 已贬值,但大多数其他主机应用程序仍在使用它而不是 3。 是否有任何
我正在学习如何使用 Steinberg VST 2.4 SDK(或者更确切地说,是 3.6.0 版本附带的 2.x 部分)。我创建了一个简单的合成器,旨在在其生命周期内以恒定频率播放正弦波。这是这个合
我正在为一个项目创建一个 VST,并尝试创建一个振荡器来产生锯齿波、脉冲波、正弦波和三角波形式。我到处都看过,似乎找不到任何有用的东西(对我来说),主要是因为我在努力理解它。 到目前为止我已经...
我一直在尝试编写一个简单的 VST 插件。它不需要任何花哨的界面,只需几个控件。但我不知道从哪里开始。开始巨大的文字墙。 我一直在网上搜索有关此主题的信息和指南,但到目前为止我发现的最好的是this和
我想我需要在我的 VST 中实现一个前瞻系统,但以前从未做过。我知道 setInitialDelay(foo) 被放置在构造函数中,然后你缓冲音频,但我不确定是否读取了“当前”音频和“先行”.....
在 VST 规范中,多 channel 音频数据缓冲区被传递...... MyClass::ProcessDoubleReplacing(double **inputs, double **outpu
我想使用 C++ 进行插件开发。在开发 VST 或 DX 之间犹豫不决。有什么考虑?我知道有些主机更容易支持一种或另一种格式(Cubase:VSTs,Cakewalk:DXs),但这就是我所知道的。
我想创建一个带有编辑器的面向模式的 VST MIDI 插件(没有音频处理,只是一个带有强大模式编辑器和随机发生器的 UI 编辑器)。 我已经阅读了糟糕的 VST 和 VST 模块 SDK 文档。我希望
以 VSTi Triforce 为例, 由 Tweakbench 提供。当加载到市场上的任何 VST 主机时,它允许主机向 VSTi 发送(大概是 MIDI)信号。然后 VSTi 将处理该信号并输出
我是一名优秀的程序员,十分优秀!