Settings

Theme

Cardinal/WASM: In-Browser Modular Synth Based on VCV Rack

cardinal.kx.studio

68 points by nicolast 3 years ago · 31 comments

Reader

PaulDavisThe1st 3 years ago

I think that people should understand what this represents, because I think most HN readers (let alone everyone else) won't get it.

1. Start from the Community Edition of VCV Rack (GPL licensed)

2. Redesign the fundamental architecture to match the way most other audio applications work with respect to interacting with audio hardware

3. Implement new modules to replace the most critical ones provided by the non-gratis VCV Rack Pro (plugin version), including sync with the host, exchange audio & MIDI with the host and more.

4. Create new GUIs for the Fundamental module collection that comes with VCV Rack, since those designs are not freely licensed, even though the modules are.

5. Identify VCV Rack modules licensed under "GPLv3 or later", and add them all to the build system, frequently requiring licensing clarification from module authors since the Rack world has been, uhm, a bit, uh, loosey-goosey with this.

6. Find or implement ports of the dependency stack for Rack to WASM

7. Port Rack itself to WASM, which requires a completely new audio/MIDI backend to deal with webaudio and webmidi.

8. Identify and fix browser-specific issues

It is a remarkable effort, and Filipe receives essentially nothing for what he has done.

  • bambax 3 years ago

    > Filipe receives essentially nothing for what he has done

    It's indeed amazing. Do you know him personally? What does he do to earn a living? Does he do consulting on the side...?

    In my (limited) experience he responds to issues almost immediately, and seems to be full-time on this; incredible.

    • drmr 3 years ago

      He is currently employed by MOD Audio (and is the lead developer for the MOD software stack). For the rest he gets some donations via github/patreon/etc, but not nearly enough to make a living.

      • Blackthorn 3 years ago

        Oh wow, MOD Audio too? He's an absolute machine! The MOD Dwarf has inspired my own DIY guitar project.

humanizersequel 3 years ago

"Installing new modules on an existing Cardinal binary is not possible at run-time, but we can add new modules to the build."[1]

From the original release — being able to select 3rd-party plugins a la carte is probably Rack's most important feature, both for users and developers. Apparently there's a technical reason: "Cardinal is intentionally a fully self-contained plugin, Whatever is contained in the current build is what you can use"[2], but it seems like Rack Pro makes it work so I'm not sure why that's the case.

[1]https://kx.studio/News/?action=view&url=cardinal-2202-is-now... [2]https://github.com/DISTRHO/Cardinal/blob/main/docs/FAQ.md

  • PaulDavisThe1st 3 years ago

    It's not a technical reason, it's a policy choice by Cardinal's developer.

    Filipe has strong ideas on how a plugin ought to behave. You are free to disagree with him, but he puts in the work.

  • bambax 3 years ago

    The reason isn't technical, it's because the author thinks a plugin shouldn't be able to modify itself on the fly.

    I think he has a point. But besides, the modules included in Cardinal cover an incredible range; it's unlikely there's something one can't do with what's there.

    The entirety of Surge XT has been pprted to VCV and is included in Cardinal for instance.

chaosprint 3 years ago

Stunning work! Just one small issue: changing the size of pages/canvas causes clicks. It may be caused by the absence of SharedArrayBuffer.

Solution:

--------------- ---------------- | main thread | <--- SharedArrayBuffer ---> | AudioWorklet | --------------- ---load CPP WASM and postMsg ---> ----------------

I used to have that issue in my browser-based live coding env: https://glicol.org

But SAB makes it gone, except on old safari that does not support SAB...

Blackthorn 3 years ago

VCV Rack is quite fun and shows how the skeumorphic interface to things like music and synthesis is actually quite useful and understandable. While things like supercollider and pure data exist, it's hard to argue that VCV Rack's interface isn't a lot simpler to get going with.

I wish popular DAWs would learn a thing or two from it tbh. Connecting VSTs with the skeumorphic interface is a better experience than something like the otherwise excellent a Reaper does. Only FL Studio (with Patcher) gets this right.

  • bambax 3 years ago

    > Only FL Studio gets this right

    Reason has racks and cables, if that's your thing.

    Personnally, I like Reason's synths, but I don't find connectiong virtual cables on a screen super intuitive, or practical. After a while it's difficult to see what goes where.

    Reaper is much less "sexy" but much clearer, IMHO.

    • Blackthorn 3 years ago

      With connected cables, you can see at a glance what feeds into what. I can't imagine anyone being able to do the same with reaper's in/out pin matrix.

      • bambax 3 years ago

        Here's a patch for "Complex-1", an attempt by Reason to do a modular synth: https://cdm.link/app/uploads/2018/12/cables.png

        Given the nature of that synth, there may not be a better way to do this, but it's still far from clear what does what at a glance, or even after staring at it for a while.

        • PaulDavisThe1st 3 years ago

          The old EMS hardware synths (and it bigger cousins) that used a pin matrix were often said to be much easier to grok than systems with cables.

          • Blackthorn 3 years ago

            On that note there's a modern hardware synth that uses a pin matrix still -- Eaganmatrix (used in the Continuum and the Osmose).

            IDK, some people say it's really hard to understand, but I think the pin matrix they use actually works really well.

  • PaulDavisThe1st 3 years ago

    > skeumorphic interface to things like music and synthesis

    There's a lot in Rack that isn't skeuomorphic. Really, a very big lot. In fact, even the patching process is only barely skeuomorphic - it doesn't obey the laws of physics in several different ways.

    Reaper has no modular environment at all, so "connecting VSTs" is not really a thing in that context - the data flow is almost always linear.

    • Blackthorn 3 years ago

      Skeumorphic doesn't mean 1:1, it just means very much like it from a design perspective. Obviously, patch cables in real life aren't polyphonic.

      > Reaper has no modular environment at all, so "connecting VSTs" is not really a thing in that context - the data flow is almost always linear.

      It most certainly does. The VSTs that sit in the fx chains are the modules. Parallel fx chains in the same track are handled by a (quite terrible) pin based system. Then beyond that there's the usual sends and side chains.

      • PaulDavisThe1st 3 years ago

        From my perspective (as a Rack user and developer of Ardour, another DAW), you're somewhat stretching the definition of a modular environment there.

        • Blackthorn 3 years ago

          That's fair. I also think people would be more eager to do wacky vst routing in Reaper if the interface supported it somewhat better.

          • PaulDavisThe1st 3 years ago

            I've considered merging all of Cardinal or Rack into Ardour as something similar to Logic's "Environment" or Bitwig's "grid"

            We could do that because we're all GPL'ed projects, and can thus share code easily.

  • fb03 3 years ago

    There's the excellent (and open source) Bespoke Synth.

    https://www.bespokesynth.com/

    https://youtu.be/NnrStjS4NhU

  • jcelerier 3 years ago

    ossia score (https://ossia.io) also uses a patching interface for audio/video/etc plug-ins, I'm curious about what you think of it

    • Blackthorn 3 years ago

      Honestly I can't say! It's just way beyond what I'm used to, with its multimedia focus. I'll need to check it out some more, which looks fun.

archarios 3 years ago

Awesome. I've been considering getting into modular synthesis.

  • ff_ 3 years ago

    Be very careful, it's surprisingly hard to eventually get out of it

webprofusion 3 years ago

Added it to the big list of Open Audio! https://github.com/webprofusion/OpenAudio

hum3hum3 3 years ago

That was really neat and impressive in Wasm

NickC25 3 years ago

I use Rack Pro, this is great! Well done!

djsavvy 3 years ago

Wow, this is mind-blowingly good!

twalla 3 years ago

This is nuts, very cool.

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection