6

我想开始制作 VSTi,更具体地说,midi 的——那些不产生任何声音而只是将 midi 数据输出到其他 vst 插件(琶音器、和弦工具等)的。

现在我刚刚为 C# 买了书,认为这将是一门不错的语言(不仅仅是用于 vst 编程),但每个人都在说 C++ 是要走的路,而 VST.NET 似乎是用于 C++... .似乎在我的 C# 道路上一切都对我不利?

我脑子里有“编程思维”,但自从我编程以来,Visual Basic、Turbo Pascal 等已经是几年前的事了。所以我有一个非常干净的开始。

在这里你有什么建议,卖掉我的新 C# 书(或把它们藏在书架上)并瞄准 C++,还是 C# 还可以?我一直认为 C++ 比 C# 学习要复杂得多。

顺便说一句,说用于 C++ 的 VST.NET SDK,它可以以某种方式用于 C# 吗?

4

5 回答 5

7

VST.NET 不适用于 C++。你从哪里得到这个想法的?转到 VST.NET 的代码并查看示例。这会让事情变得更清楚——我希望如此。

希望能帮助到你。Marc VST.NETMIDI.NET的作者

于 2014-01-11T16:13:30.973 回答
3

Steinberg 的 VST 插件架构已经存在很长时间了,1996 年首次发布。.NET 当然还需要 6 年,所以当然很多示例代码都是 C++。VST v3 使用 COM 可以更轻松地以 C++ 以外的语言开发插件。

有两种 COM,一种基于 IUnknown 接口的“纯”类型。而基于 IDispatch 的“实用”类型,也称为 OLE 自动化或 ActiveX,这些天只是称为自动化,因为“ActiveX”的名称识别不再灌输信心:)

C# 语言非常适合“实用”类型。它支持类型库,一种描述 COM 服务器实现的类型的文件格式。在 C# 程序中非常容易使用,您只需添加对类型库的引用,它就像普通的 .NET 程序集一样工作。然而,VST 使用纯类型,您没有方便的类型库来导入接口声明。

在 C# 中编写插件仍然是可能的,您必须在 C# 语言中重新声明 VST 接口类型或使用 C++/CLI 包装器来弥合差距。把这件事做好是很痛苦的,但以前已经做过了。就像在这个开源项目中一样。还是这个。不知道他们有多好,不是认可。第一个链接用于 VST.NET。它是一个托管包装器,不适用于 C++。无论如何编译后,它使用 C++/CLI 来处理本机互操作。第二个包装器不再完全可用,因为它需要 Steinberg SDK。最近才停产。当然是不祥之兆。

于 2014-01-11T17:31:14.840 回答
3

我想要第二个 Obiwanjacobi。我已经使用 VST.Net 几个月了,它非常棒。

使用 C++ 肯定有一个论据,因为它确实允许对 CPU 优化进行更细粒度的控制。但是,说 C++ 代码一定比 C# 代码快是一个神话。C# 为你做了很多艰苦的工作,比如内存管理等等。基本上,当有人说 C++ 比 C# 快时,他们并没有真正将苹果与苹果进行比较。但是,尽管如此,语言是个人选择。

我想我会添加此链接,因为如果您要创建 VST,您将需要控件。这是测试阶段的一组控件。它们是为 VST 设计的。它们可剥皮且重量轻。

https://bitbucket.org/MelbourneDeveloper/vst-controls-.net

于 2016-02-14T22:05:46.827 回答
0
  1. 如果使用一个特定的 dll,请使用 p/invoke 创建一个包装器,实现 VST SDK 中详述的功能。
  2. 如果对一组 VST 使用通用方法,请创建混合模式 ref 类包装器,将文件名作为参数传递 - 您需要在 C++ 中执行此操作。此类在托管和非托管内存之间编组数据。
  3. 由于 VST3 是最新的 VST 标准,并且与 COM 兼容,因此请使用 COM 进行实例化。有关一些想法,请参阅如何通过 CLSID 在 C# 中实例化 COM 对象?
于 2018-05-22T13:14:32.327 回答
-7

原因很简单。C ++是最低级别的高级语言之一。C# 和 Java 通常是 Web 应用程序或业务应用程序的最佳工具。对于占用空间大小与其性能成指数且成反比的多媒体应用程序而言,绝不是这样。;)

于 2015-03-13T23:53:12.103 回答