@paul I'm kind of curious about VST development, it seems like a fun way to get into some DSP stuff. Should I just start going through JUCE tutorials? You seem like you would have opinions here.

@jcmorrow
Disclaimer: I don't actually build plugins. But I've worked with many architectures in the past, including VST

Fuck JUCE. It's going to burn you in the long run. It's has overreaching complexities and a sketchy license. I'd only recommend it as a fast short term option for people solely interested in making commercial products to sell to other people. It's good at that.

I'd use the VST format directly, rather than learn a wrapper. That's a better long term solution. The new SDK (VST3?) is now FLOSS. At this point, I imagine there's some great simple examples to get you started.

A thing that surprised me starting out was how VST (or really any plugin) development has a ton of boilerplate code (and that's not even talking about UI stuff). The pure DSP code is often quite terse by comparison. Something to keep in mind.

It's helpful to learn about dynamically loaded code. On Linux, that's things like libdl. Learning how to compile a C function into a shared object file, and then dynamically load + call that function from another compiled C program really made some things click for me, and took some of the mystery out of how plugins work.

Follow

@paul Alright, so this is probably a silly question - but where do you even start learning how to use dynamically loaded code? I've done very little C, a fair amount of rust, and then a lot of higher level stuff in ruby, python, JS for work (web dev)

· · Web · 1 · 0 · 0

@jcmorrow A great question! If you are on linux/osx, you can use libdl, and make calls to things like dlopen and dlsym. dlopen(3) has some sample code: man7.org/linux/man-pages/man3/

I also quickly found some more sample code that includes both the shared object code and the thing loading that code as well: gist.github.com/tailriver/30bf

Here's another one, with Makefiles: github.com/cirosantilli/cpp-ch

I haven't tried any of these, but at least one of them ought to work.

When compiling with gcc/clang, you'll need to compile the shared object library with the flags "-fPIC" and "-shared".

If you're on Windows, I can't help you too much, but maybe WSL or msys2 could do this?

@paul Ok cool, I'm on Mac mostly, so one of those should work for me. I will investigate!

@icedquinn @jcmorrow Thanks, figured it would be different. Does WSL emulate libdl calls at all?

Sign in to participate in the conversation
Merveilles

Merveilles is a community project aimed at the establishment of new ways of speaking, seeing and organizing information — A culture that seeks augmentation through the arts of engineering and design. A warm welcome to any like-minded people who feel these ideals resonate with them.