SynthMaker

vst and .NET

Archive · 2009 12 old posts

From the original SynthMaker forum (2004–2014), with its members’ names and dates.

milo ·

Hi all. Will it ever be possible to create vst plugins with managed code? I keep hearing that Microsoft want their future operating systems to be based around managed code, so where would this leave native code applications like a vsti? I love programming in C# and the clear, streamlined approach to creating and exporting dlls that .NET makes possible. Is there any chance Steinberg will incorporate support for the CLR in their architecture? In the meantime, at least I have SM. 🙂 Milo.

exonerate ·

There's THIS...

Although I've not even looked at it myself, but it seems to give you the ablity to write .NET VSTs

Cheers 😉

Exo

TheAudiophileDutchman ·

At least MONO v2.2 C# supports managed SIMD (e.g. SSE) support, which cannot be said of MSVC#!

Andrew J ·

Thanks for the pointers exo and TAD. I hadn't heard about MONO and haven't checked in on VST.NET for a while.

Damn - there's not enough time to have all the fun that can be had with all of this stuff!

rl ·

Funny, often we're discussing highly optimized SSE assembly code where each CPU cycle/sample counts - managed code is quite the opposite. If I would implement a instrument or sequencer program why not choose a managed system like java or c#/.net. But only for the non time-critical tasks, e.g. GUI, offline processing, etc. but definitely not for audio processing which I would put in a native thread.

Andrew J ·

rl wrote: Funny, often we're discussing highly optimized SSE assembly code where each CPU cycle/sample counts - managed code is quite the opposite. If I would implement a instrument or sequencer program why not choose a managed system like java or c#/.net. But only for the non time-critical tasks, e.g. GUI, offline processing, etc. but definitely not for audio processing which I would put in a native thread.

Yep - that's exactly what I'm interested in. From my quick skim at the Mono site, it looks like it's not quite ready for that. Not sure about VS, I need some leisure time to research/understand what's what!

TheAudiophileDutchman ·

...so far, unfortunately MSVC# has got no SIMD support at all, though you can indirectly use native/optimized code with MSVC# by using a "p/invoke" call.

milo ·

I suppose it would be necessary to have a sequencer implemented in managed code in order to be able to use managed code plugins. I guess C++ will continue to be the linga franca for a while yet.

TheAudiophileDutchman ·

milo wrote: I suppose it would be necessary to have a sequencer implemented in managed code in order to be able to use managed code plugins.

That is not necessary at all. Just have a look at the examples included in the VST.NET package: http://www.codeplex.com/vstnet I tested these "Managed plugins" and they run just fine in e.g. Reaper.

obiwanjacobi ·

Hi guys,

I'm the author of VST.NET and heard you talking about it.

VST.NET has two sides to it: a plugin-side and a host-side. The project was started to be able to write VST plugins in managed code but that would still work in an unmanaged host. Native VST is a C++ standard, so if you wanna play, you have to talk C++.

The VST.NET Interop uses the managed extensions of the MS C++ compiler to bridge the gap between the managed and unmanaged worlds. At "Core" level there are about 60 methods that are marshalled for a host to talk to a plugin and couple more for a plugin to talk back to the host.

On top of that there is an optional Plugin Framework that further helps the plugin developer to pick and choose the VST features he/she wants to implement. The framework defines interfaces for each VST feature that can be implemented by the plugin. It also provides a handfull of base classes to make common tasks easier.

There are 4 Plugin samples that sort of cover the whole range of plugin audio processing. There is also one sample that demonstrates how to write at "Core-level" (not using the framework).

VST.NET also provides Host Interop. This is the support you need if you want to write a managed Host to host unmanaged plugins. I've just added support to remove the double-marshalling overhead when a managed Host hosts managed Plugins.

Anyway. Come check it out at http://vstnet.codeplex.com and leave your questions on the discussion list. Hope you'll enjoy it.

Grtx, Marc Jacobi

Andrew J ·

Hi Marc,

Thanks for touching base with us here in SM land!

I've been using C# a fair bit at work lately (asp.net development) and also some XNA gamestudio stuff for fun at home. So I'm definitely looking forward to having a look at VST.NET when time permits. So I will come and ask some questions at vstnet.codeplex.com if/when I have some troubles.

Thanks, Andrew

obiwanjacobi ·

Great. There are already some 'getting started' discussions that should help you to create your first managed Plugin. Also check out the docs (chm) that also has a step by step manual to get you going.

Have fun, Marc

Wrote something here? To have a post removed or your name hidden, write to [email protected].

Before your first post

A few rules keep this a friendly place. You agree to them once.

Shown next to what you post, here and in the app. It doesn’t have to be your real name: 3–24 lower-case letters, digits or _ (capitals become lower case, spaces become _).

    Then your post goes up straight away.

    Delete this reply?

    Open it in SynthMaker?

    It goes on the track you’re editing there, in place of that track’s sound, and into My sounds. Your other tracks stay as they are.

    Want to keep that track’s sound? Start a new song in SynthMaker first (Song › New song), then open this.

    Report this reply?

    Only the developer reads reports. The person isn’t told who reported them.

    What’s wrong with it?

    Block this person?

    You won’t see their posts and replies here any more. They aren’t told, and you can unblock them at any time.

    People you’ve blocked

    Their posts and replies are hidden from you. Unblock someone to see them again.

    The community rules

    A few rules keep this a friendly place. Everyone agrees to them once, before their first post.