问题标签 [vst]

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 投票
2 回答
1243 浏览

xcode - VST3 的 XCode 有很好的教程吗?

我对 XCode 和 VST 的世界都是全新的。我发现的每个教程都涉及 VST2.4 或更早版本,当我真的想使用 VST3 时。我目前也有 XCode 3.2.1,它没有所有其他教程所需的 Carbon 框架。

我可以参考任何想法或文档吗?

0 投票
3 回答
8276 浏览

.net - 以编程方式从 .Net 获取 wave 或 MP3 的 BPM

我有一个项目需要使用 .Net(VB.Net 或 C#)以编程方式获取 wave 或 MP3 文件的 BPM。

有谁知道这个的二进制文件或库,或者有一个代码片段来引导我朝着正确的方向前进?

0 投票
4 回答
540 浏览

audio - 代数声音合成可能吗?

假设您有一首普通的歌曲,它有两层,一层是器乐,另一层是人声。现在假设您也只有乐器层。是否可以“减去”器乐并获得纯净的人声?会不会有损失?我将如何进行这种特定类型的减法合成?

0 投票
1 回答
714 浏览

.net - VST.NET 与 NAUDIO(vstaudiobuffer 与 pcmstream 缓冲区)

请帮助我如何将 VSTaudiobuffer 转换为 PCMStream Buffer 我尝试从http://vstnet.codeplex.com/Thread/View.aspx?ThreadId=216682但无济于事。

0 投票
1 回答
3635 浏览

ruby - 我将如何以编程方式与 VST(i) 插件交互以合成音频?

以 Tweakbench 的 VSTi Triforce为例。当加载到市场上的任何 VST 主机中时,它允许主机向 VSTi 发送(可能是 MIDI)信号。然后,VSTi 将处理该信号并输出​​由VSTi 内的软件乐器创建的合成音频。

例如,向 VSTi 发送 A4(我相信是 MIDI 音符)将导致它在中间 C 之上合成 A。它将音频数据发送回 VST 主机,然后它可以在我的扬声器上播放或保存它到 .wav 或其他一些音频文件格式。

假设我有Triforce,并且正在尝试用我选择的语言编写一个程序,该程序可以通过发送要合成的 A4 笔记来与 VSTi 交互,并自动将其保存到系统上的文件中?

最终,我希望能够解析整个单轨 MIDI 文件(使用已建立的、稳定的库已经用于此目的)并将其发送到 VSTi 以“渲染”/将其合成为音频文件。

我将如何解决这个问题,我应该 使用哪种语言来构建核心框架?

最终,它将在基于 Ruby 的项目中使用,因此任何指向特定 Ruby 资源的指针也会很好。

但是,我只是想基本了解 VSTi 的 API 是如何工作的。(我已经意识到这个问题与首先构建 VST 主机的问题非常相关,尽管它只能将 VST 输出保存到文件而不能回放,而且范围要小得多)

0 投票
1 回答
524 浏览

ruby - 从 Ruby 控制 VST 乐器

我最近买了一份 EZDrummer,一个充当虚拟鼓组的 VST 插件。我真的很想从 Ruby 代码中连接到它,这样我就可以通过编程方式创建循环和鼓模式。老实说,我什至不确定从哪里开始。大概我必须创建一个可以加载插件然后以某种方式连接到它的 VST 主机。我是一名 Ruby 开发人员,所以这就是我想要实现的语言。任何指向正确方向的指针?

0 投票
1 回答
182 浏览

winapi - 如何从 VST 插件中打开 Win32 对话框?

如何从 VST 插件中打开 Win32 对话框?谢谢你的帮助。

0 投票
2 回答
1974 浏览

c++ - 将 VST 音频效果/插件应用于音频文件

这是我在这里偷偷摸摸一段时间后的第一个问题。所以放过我吧。

我需要通过 CLI 或 C++ 将 iZotope Vinyl VST 效果应用于某些音频文件(因此语言并不重要),它必须在 Mac 或基于 Unix 的系统上工作。我已经在整个网络上进行了研究,但找不到任何可行的解决方案。

我试过使用命令行实用程序 MissWatson,这可以工作,但我的结果音频文件是无声的......

./MissWatson -plugin=Vinyl -input-file="/Users/Sjaq/Desktop/test.wav" -output-file="/Users/Sjaq/Downloads/MissWatson-v1.0-mac/res.wav" -parameter=1:0.6,2:0.6,11:0.4

然后我尝试通过创建主机应用程序来使用Steinberg VST SDK,从 SDK 提供的 vstvalidator 开始。但是当我尝试加载 VST 时,我得到了这个错误:

2010-12-01 16:57:40.774 vstvalidator[4654:903] Error loading /Library/Audio/Plug-Ins/VST/Vinyl.vst/Contents/MacOS/Vinyl: dlopen(/Library/Audio/Plug-Ins/VST/Vinyl.vst/Contents/MacOS/Vinyl, 262): no suitable image found. Did find: /Library/Audio/Plug-Ins/VST/Vinyl.vst/Contents/MacOS/Vinyl: no matching architecture in universal wrapper

而且我不知道该怎么办。我对 C++ 很陌生,并且制作了一些应用程序没有任何问题,但这次我遇到了死胡同。

我已经阅读了有关 pyvst 的信息,但它似乎需要一个用于 VST 的 DLL,所以这也不起作用。

0 投票
3 回答
1789 浏览

audio - 我想做一个关于声音编程的项目,但我不知道从哪里开始

在我的高中,我们可以参加一个学期的课程,我们基本上可以自己学习一门学科。我在想我想学习“声音编程”,但我意识到我不知道这意味着什么。例如,我有兴趣了解合成器的工作原理、我如何编写VSTi以及声音在计算机科学中的工作原理。这是一个可行的课题吗?对于完全不熟悉这个的人来说,有什么好的教程吗?任何提示或建议将不胜感激。

编辑:是我感兴趣的事情。

0 投票
2 回答
367 浏览

c++ - 在类函数方法中将值存储在缓冲区中

我正在用 C++ 编写一个 VST DSP 插件。

我正在“filterbank”中创建一系列带通滤波器。我在头文件(包括函数)中实现了一个过滤器类,并在 .cpp 中正确构建了构造函数/析构函数。

我可以将值传递给方法并返回它们。但是,问题在于在函数的缓冲区中存储数据。似乎每次调用函数方法时,缓冲区中存储的值都会被重置(或者,一开始就没有正确存储)。因此,传回的内容并不“完整”。

任何建议都非常感谢!

nb 这篇文章已经更新了新代码:

这是课程:

{

朋友班 Beat_to_Midi;

公共:aFilterL();~aFilterL();

虚拟浮点 aFilterMethodL (float a0, float a1, float a2, float b1, float b2, float inputL, float prevInput1L, float prevInput2L) {

}

};

类aFilterR {

朋友班 Beat_to_Midi;

公共:aFilterR();~aFilterR();

虚拟浮动aFilterMethodR(浮动a0,浮动a1,浮动a2,浮动b1,浮动b2,浮动输入R,浮动prevInput1R,浮动prevInput2R){

} };

然后在 cpp 中构造/销毁,如下所示:

{ fOut1_l = 0.f; filterOut1_l = 0.f;

}

aFilterL::~aFilterL() {

}

aFilterR::aFilterR() { fOut1_r = 0.f;

}

aFilterR::~aFilterR() {

}

最后在 processReplaceing 函数中实现为:

void myPlugin::processReplacing (float** 输入,float** 输出,VstInt32 sampleFrames) {

while (--sampleFrames >= 0) {

// 过滤输入

In_1_l = buffer_In_1_l[0];

In_1_r = 缓冲区_In_1_r[0];

In_2_l = buffer_In_2_l[0];

In_2_r = 缓冲区_In_2_r[0];

// 在管理中过滤

buffer_In_2_l[0] = buffer_In_1_l[0];

buffer_In_2_r[0] = buffer_In_1_r[0];

buffer_In_1_l[0] = *in1;

buffer_In_1_r[0] = *in2;

// 发送到函数进行处理

返回L = my_aFilter1L->aFilterMethodL(0.000171f, 0.0f, -0.000171f, -1.999911f, 0.999943f, *in1, In_1_l, In_2_l);

返回R = my_aFilter1R->aFilterMethodR(0.000171f, 0.0f, -0.000171f, -1.999911f, 0.999943f, *in2, In_1_r, In_2_r);

// 将过滤器输出发送到 out

*out1 = 返回L;

*out2 = 返回R;

*在1++;

*in2++;

*出1++;

*out2++; }}