> Rasgo Modular — an independent open-source instrument

Hi everyone,

I’m Lúcio Araújo, an artist, musician and developer based in France. I’d like to introduce Rasgo Modular, a standalone, open-source modular instrument developed as part of my broader RASGO research into sound, composition and instrument design.

First, an important clarification: Rasgo Modular is not a VCV Rack plugin, fork or proposed replacement. VCV Rack is an important open-source reference, and the two projects share an interest in modular synthesis, accessible experimentation and open development. However, Rasgo Modular is being developed as an autonomous instrument with its own architecture, visual language and performance model.

One of its central ideas is to treat patches as starting points. Instead of always opening with an empty rack, the instrument can generate a deterministic patch that is already connected and sounding. The musician then plays from there — adjusting parameters, rewiring it manually, allowing controlled variation, transforming it, or removing every cable and building from scratch.

Another difference is that a cable is an object with its own state, not merely a wire. Connections can have properties such as gain and probabilistic conductance, allowing part of the composition to exist in the changing relationships between modules.

The current v0.1.0 includes:

  • 58 modules organized into eight functional families;
  • deterministic seed patches;
  • patch mutation, evolution and crossing;
  • stateful cables;
  • integrated recording and score logging;
  • an internal LEARN system in English, Portuguese, French and Spanish;
  • standalone packages for Linux, Windows and macOS;
  • source code under AGPL-3.0-or-later.

Linux has been tested on real hardware. The Windows and macOS packages have been built and tested through continuous integration, but have not yet been run on physical machines.

I am interested in interoperability, but I do not want to promise a VCV integration before understanding what would actually be musically useful. MIDI, OSC or documented patch exchange might eventually provide bridges while preserving the identity of both environments.

Project page and downloads:

Source code and documentation:

I would especially appreciate feedback from the VCV community on three questions:

  1. Does starting from an already sounding patch encourage exploration, or do you prefer an empty rack?
  2. Does a cable with playable state seem musically useful, or could it make patch behavior harder to understand?
  3. What kind of interoperability between independent modular environments would be genuinely useful without requiring one to become a plugin of the other?

Thanks for reading, and thank you to the VCV Rack developers and community for maintaining such an important open modular ecosystem.

6 Likes

I think people have quite different preferences in that regard. I think most prefer to start with the template they have created. But semi-randomly generated and functional patches could be fun for exploration.

That bit confuses me a bit. Sounds a bit like “modules hidden in the cable”.

I guess the lowest common denominator of exchange between any two invironments is simply sound. Above that it could be voltage, if the two environments share the same concepts regarding voltage control.

+1 for user-set init template: after all, in a visual development environment like SE/Flowstone, the option to have the last file on exit be the default file on init can be useful, but there were times in Flowstone, for instance, where long hours of work were lost due to unhandled crashes; setting the init preference to “New” eliminated that potential headache. If you’re not sure how your code will behave under edge cases, then I’d steer away from a "autogen patch on engine init " default. “Safety first” is my mantra :wink:

Comme quoi nous savons faire de très bonnes choses en France ! :wink: En tout cas, très beau look ton plug-in. Je testerai à l’occasion, évidemment, là je galère avec les “level” exponentiels du DX7 sur mon (mes deux) module(s) pour VCV Rack 2, en gestation.

(English translation)

It just goes to show that we know how to make some really great stuff in France! :wink:

In any case, your plug-in looks great. I’ll definitely give it a try when I get the chance—right now I’m struggling with the exponential “levels” on the DX7 in my (two) modules for VCV Rack 2, which are still in development (DeXtral and DeXtral Kompakt).

Hello Lucio! My opinions are not necessarily a good representation of a typical user. But I’ll share them anyhow in case they are useful:

I would not typically start with an existing patch unless I was evolving something which I had previously created. Otherwise, it wouldn’t feel like my own work. <= This is arguable not logical, but still “feels” that way.

I’m not sure if I completely grasp the purpose of the cable parameters. If it were to, for example, emulate a somewhat faulty patch cable, I would expect that same feature could be obtained through another in-between module (let’s call it “Doepfer Jacks”, with one input, one output, and that requires users to virtually wiggle the cable periodically, otherwise it starts malfunctioning).

Maybe a pair of polyphonic bridge modules, one in each rack environment? In other words, VCV Rack would have a “Rasgo Connector” module with 16 polyphonic inputs and 16 polyphonic outputs. Rasgo would have a “VCV Rack Connector” module with the same?

Thanks!

Thank you all — this is exactly the kind of feedback I was hoping for.

Starting patch. Point taken, and I think it should be the musician’s choice. Today Rasgo Modular always opens on a generated patch. You can remove every cable with n or open your own patch with Ctrl+O, but you can’t choose how it starts. For the next version I’m planning a startup preference: generated patch, empty rack, your own init patch, or the last session. @jaibhimadevi, your point about safety is well taken: an empty start should always be one click away.

Stateful cables. I clearly haven’t explained this well, so here is one example. Every cable has a gain and a “conductance”: the probability that it lets the signal through, re-drawn at random about twenty times a second. Patch a clock through a cable with conductance 0.6 and roughly 60% of the pulses get through, chosen by chance, so you get a thinned-out, varying rhythm without adding a module. A cable can also be ruptured (the last bit of sound repeats and fades instead of stopping dead) or combine its signal with a second one (ring mod, fold, difference). @clone45 is right that the same can be built with in-between modules. The idea is to keep these relationships inside the connection, so the patch still reads as “who talks to whom, and how”. The fair criticism is visibility: all of this is shown in the cable inspector (click on a cable), but not on the cable itself, and that’s something I want to change.

Interoperability. @LarsBjerregaard, agreed that sound is the common ground. @clone45, the pair of 16-channel polyphonic bridge modules is a very concrete idea, and I’ve noted it. I won’t promise it yet, but it’s the most useful shape I’ve seen proposed.

Update: the current version is v0.1.4. Since my first post, the Windows and macOS packages have been installed and played on real machines, and Linux now also has an AppImage and a .tar.gz.

@Ohmer, merci ! Petite précision : ce n’est pas un plug-in mais une application autonome. Bon courage avec les niveaux exponentiels du DX7 sur DeXtral !

1 Like

I downloaded the app, and I am seriously blown away. This was obviously an incredible amount of work. To date myself I started all of this when I was in college; they purchased one of the first APR 2600 (an incredible machine). There was no course and one of the teachers was kind enough to give me the key to the lab. I got the Electronic Music book by Alan Strange and went from there. To think that you can go online and download something this powerful is something I don’t think anyone ever imagined.

Great work! I look forward to working with this.

Thank you, this means a lot, especially from someone who learned on an ARP 2600 with a borrowed key to the lab. That’s a great story.

There’s a small connection there: the 2600 was normalled, so it made sound before you plugged in a single cable, and you learned by overriding what was already there. Rasgo Modular opens the same way, with a patch already sounding that you play, change or tear down.

Two things came out of the feedback in this thread and are in the current version (v0.1.6):

  • How it opens: the OPENS button in the header lets you start from a generated patch, an empty rack, your own patch or your last session.
  • The cables show their state: thickness is gain, a blinking cable conducts only part of the time, and a badge in the middle shows when a cable combines two signals.

Strange’s book is still one of the best ways into all of this, by the way.

If anything feels confusing or breaks while you work with it, I’d really like to hear about it. Enjoy!