Why I’ll never create modules for VCV Rack anymore—and what I’ll make instead
Hiya hello hi what’s cool and good, I’m Aria Salvatrice, some sort of multimedia artist and software developer from France
I’ve been making weird videogame-influenced electronic music since forever. I call it “Baroque Technopop” or “Pastorial Industrial” music depending on its mood. I heard music sells better when it has a genre, so I looked up genre names I could use on Wikipedia, the Free Encyclopedia, although I’m not really sure what they mean.
I’ve always been interested in synthesizer technology, and last year, I’ve started to create a few weird virtual modular synthesizer modules for VCV Rack, with the goal of creating my own integrated system of modules for performing aleatoric and generative music.
I’m forced to change my plans. The developer community’s issues with VCV’s toxic environment have been hidden from public view by VCV, so I’m discussing it on my site instead.
This article is pretty long, so feel free to skip to the relevant sections using the table of contents if you only care to know what’s the deal with VCV alienating third-party developers. Otherwise, get comfortable, let’s nerd out about music and synthesizers for a while, and avail yourself of this handy little high-tech embedded MP3 player if you wish to sample how I use synthesizers as I discuss them, there’s both live improvisations and painstakingly sequenced songs:
If you didn’t use Winamp as a kid, the play button might be a bit hard to find. But having a cool skin is much more important than usability once a program is drilled into your muscle memory. Whom I should credit for this skin, sadly, seems to have been lost to time.
I wanted to learn more about sound synthesis for a while, and wanted to see what this knowledge would do for my music. Those days, if you want to learn about synthesizers in depth, you will realize that you should learn with a Eurorack modular synthesizer. And you will realize any half-decent Eurorack setup will cost more money than a car, and you will reconsider immediately.
The racks people create on Modular Grid to show off their Eurorack setups, or more often, the setups they wish they could afford, rarely start under €3,000, and you really don’t want to know just how high they can possibly go.
Look, I won’t complain about my financial situation. I’m not starving. But I focus on the essentials in life.
A pair of plastic garden chairs is a fancy enough stand for my aging, grimy, low-budget studio monitors. Half of my music and computer tech is a decade old, still working perfectly. All my groceries shopping is done at hard discounter LIDL. All my fashion comes from Aliexpress. However awkwardly, I can somewhat handle operating a sewing needle, a drill, a hot glue gun, and a soldering iron. This lifestyle does wonders for my bank account. I won’t complain about the life I chose.
But if I were to pick up a modular synth habit? Yeah, I’d be complaining about starving. Once you pick up your first module, your financial fate is sealed.
So, enters VCV. That VCV company makes a software modular synthesizer environment they call VCV Rack. While it’s a commercial company, the core is open-source, with a built in app store, letting you buy more of their modules. But the app store, called the module library, has very few commercial releases. In fact, it is almost entirely comprised of open-source and freeware modules. VCV only provides a few basics and the shell, the third party modules are the reason people love it.
I asked friends who own Eurorack hardware for pointers, and one told me I can’t possibly go wrong getting started on MI. MI. What’s even a MI?
“Mutable Instruments”. One of the most popular Eurorack companies, creating Open-Source hardware modules. The author gave her blessings to VCV to release them quasi-officially, too, so I would be learning the real thing, using the real firmware.
Mutable Instruments' Marbles is available as Audible Instruments Random Sampler, without the brand endorsement, but with quasi-identical features.
The creator, Émilie Gillet, she’s a one-person company—as most Eurorack companies are, really. VCV is also a one-person operation, Andrew Belt and the occasional collaborator, I learned.
People told me to watch hours and hours of videos to learn the field, but I was like, no offense to people making videos, but screw that, who’s got time for this, I’d just just plug in virtual cables at random and listen what would happen, way faster to learn that way, you get results within minutes rather than days. Of course, the first results sound like trash, but it’s fun, so you don’t care.
The Mutable collection had a bit of everything to get started, but the module that really caught my attention was Grids.
Grids was reproduced in VCV by third-party developer Dale Johnson as Valley Topograph
Grids is used to discover rhythms. Not to program beats! No, you just dial in the general idea. Machine learning was used to analyze a ton of drum loops, and from those archetypes, you select the intensity, and navigate a morphing landscape of patterns.
Not only the idea was incredibly cool, the results are very musical, and the approach entirely changed my mind about what modular can be. I thought modular would be a very formalist thing, something that strongly values traditional techniques half a century old. Instead, I found a really free-form instrument, using modern digital techniques, with no built-in preconceptions about what it means, or how you should use it.
I loved this approach, I tried to learn everything about the field. Within a few days, I could perform real songs with it. Not write, but perform. To improvise without writing them in advance. It was amazing.
The modular is not like the keys: it doesn’t require virtuosity, dexterity, years of practice, or a great sense of rhythm–it requires you to think, and to feel, really fast. It requires multitasking, embracing the emergent chaos of the system. It’s mentally intense, but not exhausting. It’s not even performing a musical instrument, it’s less granular than this. Not that I ever had a chance to compare with the real thing, but I’d say it’s a bit like conducting an orchestra.
In fact, I learned that one of the best known modular artists right now, Colin Benders, used to conduct a few dozen of musicians as Kyteman’s hip-hop orchestra. Yet, he traded it all for messy walls of synthesizer modules and moody techno. It has to mean something, right?
When I saw one of his live performances with his gigantic bespoke system of a song named Root Canal Therapy, I realized two things:
- I want to do the same thing, but I don’t have access to a €40,000 synthesizer.
- I can do it with software, but I’ll have to write some of that software myself.
I always had many ideas about aleatoric and procedural music I wanted to explore somehow, and those ideas wouldn’t stop refining themselves as I learned more about modular synthesizers.
I had no experience with C++, no experience with music software development, no experience with vector graphics, no experience with Github… But whatever, take it one step at the time. Start with the simplest thing possible, improve on it, work my way up, get enough skills to get started on my weird ideas.
I started with a simple utility, something that was too simple to screw up. A polyphonic split and merge in a small package.
Splirge was named after Håkan Müller’s MxSplirger, part of a fun collection of Reason Rack Extensions that were made free after his untimely death.
Soon after, I wanted to do something serious, and made my first real original module.
I was talking to a friend who makes fantastic music for shoot-em-up games: what if the level select screen from Darius, Taito’s series of arcade games, was a sequencer?
Two days later, we had the answer: it works really well! It creates structures that start the same, but resolve differently. The results are much more musical than you’d think, even if you program it at random, and it really shines if you patch it creatively and deliberately, constraining a bit its possibility space.
I thought nobody would get it, that nobody would ever use it.
Instead, I was immediately deluged in feature requests.
Eventually, I implemented most of them, and with every new release I fixed bugs, paid off technical debt, improved its performance. I had a ton of plans for the future, so I couldn’t afford to let beginner code hold me back.
I started creating more and more ambitious modules to explore my ideas, giving them themes that encourage experimentation.
All in all, in a year, I made 22 modules. If you remove the blank plate which took no effort, and ignore the variations that share the same code base, there are 16 unique modules.
Arcane gives you every day a musical fortune to work with.
You know, sometimes you feel like making music, but you’re paralyzed by choices, or stuck in a rut doing the same thing as usual, so Arcane makes a few decisions for you: the tempo, the scale, the rhythmic patterns.
It also draws for you a major arcana from the Tarot of Marseilles, a 15th century deck that was meant for play, before it became popular for divination.
Now, this feature is purely cosmetic, but traditional decks such as Marseilles' or the Waite-Smith deck have this interesting property that you can get meaning out of them without any belief or education in the associated mysticism. You can think of the basic idea they depict as Jungian archetypes you can connect to your music. It also evokes well known uses of divination as a tool for aleatoric music, such as John Cage’s use of the I Ching as a compositional device. Do not discount the creative potential of being given a theme you have to work with.
Because Arcane works online, fetching the fortunes from my server, everyone gets the exact same fortune at the same time, so you can compare songs made the same day with your friends. They will definitely sound a little similar to each other, but still entirely unique.
Another good way to use Arcane is to create a song that sounds different every day. You patch the rack once, then when you reload it the next day, the song will have changed. It’s a bit challenging to make such a song that works consistently every day, but very rewarding, and it will teach you a lot of tricks to make generative music work, which will improve your live performance skills.
Modulus Salomonis Regis
Modulus Salomonis Regis is a random sequencer that creates patterns that can be hypnotic or chaotic depending on your patching style.
It’s based on self-patching its outputs back to its inputs, almost evoking the shapes of Goetic sigils, creating visual patterns that summon music.
I’ll concede it is challenging to actually understand, but you don’t have to! It’s really easy to get started, and it rewards experimentation over deliberate patching, by design. Internally, it has a bit of imperceptible latency built in, to make it possible to process the output through external modules, before patching them back to inputs, and it all just works despite the delay added by the external modules, you really don’t want to have to think about that stuff when you’re jamming.
Quatherina the Quantum Duck Presents Quatherina’s Quality Quad Quantizer
QQQQ for short, but I would prefer if you said that grandiose name in full.
It was my take on making the quantizer a true performance instrument aware of harmonic structures. I wanted it to also be the heart of future sequencers that are aware of scales and polyphony, but I wasn’t totally happy with the way it worked. Its most useful feature took a ton of work and external help, but was so worth it: you can load up a chord progression simply by writing it down with your keybaord! It even supports lead sheet notation. Of course, it doesn’t care about voicings and inversions, but it’s still very useful and musical as it is. I wanted to work on sequencing chords next, with a module dedicated entirely to this, that would be used with a future sequencer system.
Psychopump is technically just a preset manager, but it does all sorts of incredible magic when you pair it with percussive or plucky sound modules.
It’s a very deep module, full of potential uses, but the most pragmatic way to use it is to pair it with CPU-expensive percussion modules, to get more sounds out of fewer instances. It can also add random modulation offsets, which can create glitchy noises at high settings, but can also be used to add almost imperceptibe variations to drum sounds, giving them a bit more of an analog character.
I made a bunch of little utilities, but all of them add at least one interesting twist on the basic feature they provide. For example, the split and merge collection has the ability to sort polyphonic channels, which you can use for algorithmic composition, but also as an audio effect to create very harsh distortions, or to generate correlated LFO waveforms. I was planning to add a channel rotator and randomizer to the system next, to help people understand how to use it.
Another fun little utility is UnDuLaR, once again for live performance. It lets you scroll around the rack using a MIDI controller, but the way everyone actually uses it is by pairing it to an envelope follower on the kick drum, to have the cables bounce to the beat.
And there’s also a few little controllers. They might look very simple, because they’re trying to be space-efficient, but they are much more powerful than similar-looking modules if you right-click them to see all they can do.
Documentation that tells you you belong
The theme of my collection was always similar: musical improvisation with modules that are focused on live performance.
And every single one of them is documented in detail.
Making those dynamic cables that appear and disappear as you scroll was a huge pain that took me hours, entailing writing raw SVG manually, but so worth it.
I wanted to create documentation that assumes you might be a complete beginner to modular synthesis, since I am one too.
Too often, documentation gives the vibe that if you don’t already understand all about this stuff, you simply don’t belong here. Screw that! I wanted documentation that tells you exactly how to get started. Docs that tell you you belong here. That it’s OK if you got no clue how the puzzle fits together, because I’m gonna hand you all the important pieces.
And docs with a lot of jokes, because if you’re not having fun with my stuff, you’re probably doing something very wrong.
Quality takes time
Making this collection as it stands today, and its accompanying documentation, took me at the very least 400 hours.
I know that number sounds higher than you’d expect, since I only made 22 modules. Maybe some of you might think “I could do that in 30% of that time”.
But remember, when I started out, I had absolutely no experience with with any of this stuff. This was a learning project, and this figure includes educating myself about all sorts of topics. C++ and audio development, of course, but not just that. I learned a lot about synthesizer design too. Making my quantizer took days of learning more about music theory, just to get a single detail right - a perfect curation of scales. I learned some basics of electrical engineering and digistal signal processing, too. Making the documentation site took almost a week, but it taught me the basics of Vue.js and Nuxt.js.
If I were to implement all these modules from scratch today, with all I have learned, I think I could get it done in 100 hours of work, documentation included.
It was a big time investment, but it was starting to really pay off. Despite being my most complex release by far, Psychopump, the last module I finished, took me less work than some earlier and simpler modules did.
Plans for the future
I had many plans for the future, in particular regarding music controllers.
I wanted to continue working within systems aware of scales and chords to create control surfaces that are difficult to build in other environments. For example, what if the venerable pitchbend wheel was aware of tonality, instead of operating on a specific number of semitones? What if you could control the physics of the spring, to make it incredibly slow, or to give it a cartoonesque kickback? What if a XY pad was spring-loaded? What kinds of lead synth performance would it inspire if in addition to that, it were easy to patch duophonic operation as easily as Reason’s Complex-1 synth?
Reason’s Complex-1 offers a rather limited selection of essential modular modules, but is nonetheless full of potential, and its duophonic input system is really well conceived.
Another control method I was interested in was disk rotation, like a turntable. There’s a ton of cheap, gimmicky DJ controllers gathering dust in people’s homes, with perfectly serviceable jog wheels to put to musical use. Many people have explored similar territory. Syntablism is a microgenre where hip-hop turntablism techniques and modular synthesizers meet beautifully. For a more gimmicky example, Susumu Hirasawa would spin a wheel on stage to produce electricity for his synths, connecting to his advocacy for sustainable energy. Cranks, which are pretty much disks with a wheel, can also be used to spring up a music box, or to control the tempo of a street organ. You could reproduce all those ideas with a simple controller that makes no assumptions how it will be used, but simply simulates a wheel, a motor, a brake, and friction.
I wanted to also try out making a gesture-based sequencer, similar to mouse gestures the Opera web browser introduced almost two decades ago.
I feel it’s an aspect of UI vocabulary that’s tragically neglected by everyone, given how powerful it can be. What if you could use gestures to program a 303-style step sequencer? For example, in a piano roll, clicking on a cell and dragging the mouse to the right adds a slide, dragging it up adds an octave. It would be really fast to program that way.
Another interesting unconventional way of controlling music to explore is the humble gamepad. Their most interesting property is that many people have developped an incredible level of dexterity over them, and they were built only with ergonomics in mind, not with any concerns of acoustics and tradition, like most instruments are built. The DualShock was introduced almost 25 years ago with the first PlayStation, and its layout has barely changed since, they got it right from the start. You can press many buttons at once on a gamepad, a property that’s not present in consumer keyboards - only the ones meant for gamers bother with N-key rollover. And this key chording is what’s interesting. With the correct layout, you can put them in the hand of a beginner, and they can play music with it easily. Final Fantasy XIV does this, even adding latency compensation to allow parties of Bards to play together as an ensemble.
That’s what my Catgirl Dress-up XIV character used to look like back when I played. Thanks for asking!
I also wanted to play around with computer vision, and after mentioning an idea to use real marbles and a webcam as a cheap physical controller for a matrix mixer, Unless Games actually came up with a very clever prototype that uses a much simpler method than I envisioned, using GPU shaders alone. It’s really cool.
There’s also the fact computers are often online those days. I started to explore what it means for music with Arcane, but I have more ideas. For example, what if there were a sequencer that shared its state across every instance in the world, but you could only change one parameter every few seconds? Don’t think of it as a collaboration tool, but as a game, a social experiment, if not as an art piece in its own right. I could even make a web interface for it, that way the audience could directly interact with a music streamer. What would happen?
I had a dozen more things planned, but I’ll stop here for now, because I could go on for days, possibly weeks.
A lot of my work was meant to bridge the gap between toy and instrument, to reduce the barrier to entry to become a live performer, to encourage participatory intimate performances where the audience could easily be invited by the artist to join in.
I’m very influenced by the works of Toshio Iwai, best known for creating the Tenori-on, and whose musical toy Electroplankton for the Nintendo DS offered unique ways for everyone to enjoy interacting with sound. This game, along with other interactive musical experiences such as Rez, were important formative experiences to me.
Ignoring red flags
So, back to VCV. You know, I had some misgivings about making modules for VCV Rack right from the start, and in hindsight, I really regret not paying attention to my gut feeling. The author of VCV gives you the vibe you don’t want to get on his bad side. Everyone learns to tip-toe around him, or to avoid interacting altogether. It’s draining in the long run.
I tried to make allowances. People have different communication styles for all sorts of personal reasons, and might feel more comfortable putting on a persona that’s all business all the time.
And besides, the rest of the community was all right. Remarkably, I had no trouble about my gender, despite the community being almost exclusively comprised of older men, and despite showing my face, both in my avatar and in a few videos, and it’s a face that doesn’t make it hard to guess that gender indentity is an ongoing unfixed problem of mine.
Transition in your thirties without a supportive medical network takes time, and it’s not a given one day you’ll end up “passing” by society’s standards. But being true to yourself only takes guts.
Acceptance always counts for something! Inclusion of the transgender community is still way too rare, and I didn’t even have to explain anything for people to act normally around me. That was a good reason to persist creating things with those folks. And after all, electronic music has always been a home turf for those who have to fight for their inclusion in society, with strong roots in Black and LGBT culture: it’s not a fertile habitat for bigots.
But as I made new releases, I saw more and more discouraging incidents. Contributors treated rudely. Contributors made to understand that their time is basically worthless. Nobody was treated like a contributor anyway, I felt treated as if I should be thankful to even be allowed to provide value to this company.
You’d see people–people much more technically experienced than me–asking reasonable technical questions in the development channel of the project’s Discord, and Andrew Belt would tell them how much he charges per hour for consulting. What’s even the point of having such a channel then? To make people feel guilty, inadequate, resentful? To create a combative atmosphere?
Over time, a lot of small incidents like this really added up, and started to suck the joy out of what I was creating. The problem wasn’t a single incident, but a constant pattern of behavior.
Contributors treated rudely, condescendingly, even though the only reason anyone uses VCV at all is for the third party contributions: without this ecosystem of third-party creators, it’s an empty shell, providing no more than a basic take on the bare essentials. You will always need third party modules to get anything done.
Taking Over People’s Real Names
The last straw concerned the policy about taking over inactive modules. About making it possible by default for someone to take over my very name, Aria Salvatrice, and releasing their own fork of my software under my name.
That’s right: if I’m inactive for just one short little month, someone else can just go ahead and release software under my name, my name as a person, with no process in place for me to reclaim it later, even if their releases have low quality standards, even if they add ill-conceived features that work against my long-term plans.
I made it clear–as politely as I could, which was hard–that the policy was absolutely unreasonable. Absolutely no app store I ever heard of allows taking over names, much less taking over humans' first and last names.
And in the domain of synthesizers, it is common to name a machine after the lead engineer. Bob Moog, Don Buchla, Serge Tcherepnin, Roger Linn, Ray Kurzweil, to name a just few well known pioneers. Many modules in the VCV library are named after their author, I am far from being an exception, I’m following a time-honored tradition.
Open-source is no excuse. The code is open-souce, with a perfect understanding of what it entails. But my name isn’t. That’s why my logo is not directly drawn on the faceplate, but composited at runtime from a separate file: I’m trying to make it as easy as possible to modify my code.
While my signature, doubling as a logo, is obviously meant to be whimsical by integrating an obvious reference to a popular culture symbol, the Cool S, it’s meant to reflect the playful and childish personality of my art: I take that signature very seriously.
And while VCV is happy to claim ownership over the names of amateur humans like me, its “Ethics Guidelines” are absolutely deferential towards the moral rights to the name and trade dress of commercial brands: after all, there aren’t many eurorack hardware makers, so they would never allow ports of their modules to be offered in VCV’s store if they had to compete against counterfeit knock-offs impersonating them. But humans, now that’s fair game? If this business policy protects the color palette of commercial companies with lawyers, but not the very name of real humans, it has no right to purport being about ethics. People should not be made to explicitly opt-out of unethical policies.
Since my explanation why I stopped my module collection was hidden from public view by VCV, two people sent me e-mails assuming the takeover policy was the reason I discontinued my collection. But that was not the reason, it was the catalyst: one problem too many.
Because at its core it’s a dispute that could be solved immediately by remembering there’s real humans, humans who take pride in their name and their unpaid labor, behind all the computer screen names and the synthesizer modules. I’m not just a faceless namespace problem in some database on a server.
When Andrew Belt told me, of this policy dispute, that I could take it or leave it, I couldn’t even sleep the night after that, I was forced to confront that I was working on this collection on the sunk cost fallacy, and that he made participation way too stressful and unrewarding for this hobby to be healthy for me.
Like, what the hell am I even doing with my life? Why am I investing so much effort into this very niche domain, when the person in charge acts like he’s the one doing me a favor by having my unpaid work on his commercial app store, when I could have put all that time and energy towards a positive creative community that would actually want me to participate instead of wanting me gone?
How much more work would have it taken for my collection to come into its own to become the coherent integrated system I would always talk about? Even if I had built up the skills to create future modules at a much more efficient pace than the early ones, I needed at the very least 1,000 more hours, for sure, probably more, spread across about thirty, forty more modules.
And after Covid-19 lockdown giving me a lot of free time, that would have meant years of work.
I felt trapped like an idiot. I had shown I was seriously committed to this project. So now I had no choice but to deal with this sense of entitlement and disdain for the years to come?
Or you know, I could actually just leave it. Nobody expects you to actually leave it when they tell you to take it or leave it, people only say that when they’re done with respectful communication and think you’re not in a position to bargain with them.
Except, I don’t owe you shit, lol. I can quit any time I want, just watch me. And nobody could resent me for quitting under the circumstances. So I just got my last module release done first, didn’t want to disappoint people since I had shown I was working on it. But along with the release announcement, I explained why it would be my last, once again as politely as I managed.
And after quitting, I received much more private support than I could possibly imagine, for which I’m really thankful. Many fellow developers and former developers, some of whom seemed happy to have a chance to vent their own frustrations to someone else.
One developer told me they had quit for the same reason, but they simply decided to stop the releases without a word, they don’t want to burn professional bridges.
Another has a similar story: while they have quietly made public they have quit, they do not want to bring negative attention to themselves. But it’s a real shame, I’m a huge fan of their work, and made great songs with it. They mentioned they were “mourning” their project. It’s just sad.
Someone else told me that they develop things on their own, and refuse to interact with the developer or the community in any way except to push new releases, and told me I would be wise to do the same. Probably works out for them, since they are much more experienced than me, but this accelerated pace of learning of mine was only achievable in the constant presence of a knowledgeable community, and interacting directly with people who make music with my work is what makes the effort worth it in the first place.
A friend I already knew from outside VCV, who had given me the authorization to finish their abandoned module and release it myself with joint credit, told me that while the negativity wasn’t the only reason they stopped submitting their modules to the VCV library, well, it certainly didn’t encourage them.
I wish I could name those people by name, but unfortunately, none I asked wished to have their name mentioned.
The Hide Button
Besides the private support, many developers used my release thread on the VCV community to echo my sentiments.
I tried to explain why I would stop my work there as respectfully as I could, but it was not enough to prevent my thread from being hidden by VCV.
In fact, nobody even discussed my latest module release at all, which is frankly disappointing, as it had been my most polished release so far, and I had put a lot of work and love into it as always, and almost nobody has really made use of its true potential. People only talked about their own experiences with rude behavior.
Many developers participated, often with a frustration or an incident to bring up, or at least a recommendation to right the course.
We were told that this thread was to be a productive conversation, that would not be deleted, although the posts of two developers have been deleted since, after screencaps of a private dispute with a developer were posted in public by Andrew Belt.
The productive conversation happened, and the consensus from the developer community was clear: there is a problem, and the problem should be fixed.
The productive conversation was kept in one single convenient place. That way, it could all be made to disappear, all at once. The productive conversation about respect was concluded with Andrew Belt giving the open-source developer community that made his success the “Hide” button.
Not just locked, and not outright deleted, but hidden: if you do not know the conversation happened, if you do not know its URL, you will never be able to see it.
And after it happened, a large amount of references to what I said, references made by other people I do not know, were also deleted from VCV community spaces, in particular its subreddit.
Two separate examples of deleted posts I was made aware of.
You would never be able to guess why I randomly stopped one day. The reason why went down the memory hole, just in time for the company to hold a Black Friday sale without controversy, with the conlcusion that Andrew Belt’s public behavior should be reported privately to Andrew Belt.
Of course, the proper way to say it isn’t take it to a private e-mail, where I would have been told in very professional language to suck it up and shove it up my ass.
No, the proper answer is to bring the conversation in public, somewhere this company has no way to systematically reply to the entire developer community with the “Hide” button. VCV can delete mentions of this article, but it can’t delete the article itself, and it can be shared via side-channels.
Code of Conduct & Selective Enforcement
When I participated, the VCV community had a Code of Conduct, the Contributor’s Covenant, that many open-source projects use.
Now, honestly, I’ve always considered Codes of Conduct to be primarily about American Trump-era politics, a very divided foreign country that has nothing to do with the majority of Open-Source participants like me. When I see a code of conduct, I never assume project maintainers take it any seriously.
The actual text of the Contributor’s Covenant seems reasonable, sure, it tells you not to be a jerk or a bigot, but the actual text only matters assuming it will be enforced fairly, and that it applies to everyone.
The idea is that enforcement of the Contributor’s Covenant works by sending a private e-mail to the project team.
But everyone is aware that beind the “royal we” that VCV frequently uses, there is only a single person running the show. Everyone is aware that on the other end of that e-mail address is the very person everyone’s too intimidated to ask to stop being rude, condescending, and demoralizing to the open-source contributors that made his company thrive. Everyone understands that the Code of Conduct might as well tell them to send their complaints directly to the trash, for all the difference it would make.
Inclusion of women
Supposedly, Codes of Conduct are also a feminist idea meant to foster inclusion of women in male-dominated technical spaces. Obviously, it’s not what happens in practice.
I mean, the community made an honest attempt to acknowledge that no women were participating at all. There was a conversation about the extreme gender imbalance of participants, and about fostering a welcoming space for women, over a year ago.
It was a reasonably polite conversation, well-meaning but naïve and reductive. And it was locked without a single identifiable woman having participated even once.
Likewise, those issues are to be discussed in private. But nobody would take the offer to discuss inclusion one-on-one off-the-record with the man in charge and the exclusively male cast of volunteer moderators, of course: that’s just a hypocrytical way to create as much friction as possible to discourage people from bringing up this uneasy yet important question. And being welcoming to women is definitely a question a lot of synthesizer-focused spaces are trying to address, leading for example to the name change of the Mod Wiggler and Gearspace communities. Refusing to allow this conversation is another red flag I was guilty of disregarding.
Now look, I’ll admit freely, starting transition a bit later in life means I have a lot of experience navigating male-only social spaces, so I won’t claim to have great solutions to offer here. But shutting down the conversation definitely sends a message women aren’t welcome in the VCV community, and boy, did they take the hint.
Since then, there were repeated changes to VCV’s code of conduct. Now it says that “public challenges to moderator decisions may result in a ban/suspension”. Essentially, the code of conduct’s main purpose is to ensure Andrew Belt will never have to acknowledge then change his hostile conduct towards the open-source developer community. When the next contributor gets burned out, the Code of Conduct will ensure she can be shoved under the rug, the same way I was.
When you always conceal the evidence you were repeatedly asked to show third-party developers basic respect, when you make a code of conduct saying that it’s the rest of the community that shouldn’t do the things you were the only person to actually do, and when you force people to always take it off the record whenever they try to tell you that you’re being disrespectful, then it’s pretty easy to claim the problem doesn’t exist at all. Just press the hide button forever.
I already had an abysmal opinion of Codes of Conduct, but now, I have an even lower opinion of them than I even thought possible.
Hostility to collaboration and forking
It would be easier to continue my work if there existed a healthier fork to migrate to, but VCV has been trying to prevent forks both through legal and social means, so there’s no viable fork yet.
There’s MiRack, a fork of VCV for Mac OS and iPhone. Any mention of it within the VCV community is immediately deleted, and its author is banned, so it exists completely disconnected from the VCV community, despite offering a smaller selection of the same modules with mobile support, which is something the community really wanted badly. Being only for Apple devices makes it impractical for me to use, so moving my development to it isn’t an option, unfortunately, if it were on PC I might have done that.
I can’t try out MiRack, so I won’t vouch for its quality. The developer claims its performance beats VCV Rack in multithreaded benchmarks, but its selection of modules is much more limited.
There used to be VeeSeeVST, another fork of VCV for the VST plugin architecture, but it’s dead: the VCV project asked the author to discontinue the fork in June 2019, to avoid competing with VCV’s commercial offering - a commercial offering that was to be released late 2019.
It’s important to understand that the developer community relented from maintaining a VST fork since 2019 specifically to ensure VCV would face no competition.
By acting as toll gate monetizing the community’s open-source modules, it would have allowed VCV to segment the market to target serious music producers willing to pay a good premium for VST support, and it would have been a significant source of revenue for VCV, had it been actually released: A VST version is by far the feature the user community asks for the most, even more than it wants the mobile support that MiRack provides.
From analyzing the codebase differences, I can tell you VeeSeeVST was a very complex and polished fork. However, the author had a basic proof of concept working in a single day: there was no technical obstacle to people picking it up and maintaining it.
Getting a proof of concept working can be incredibly fast, but turning it into a polished product took the developer a lot of effort.
The reason nobody maintained it for two years was one-sided goodwill towards VCV, not lack of interest. But VCV’s commercial VST alternative has failed to materialize since 2019, leaving the community unable to have their most wanted feature - even though the community had it working, and could have kept it working.
VCV could have come to a commercial agreement with VeeSeeVST, repackaged that code that worked properly, put a pricetag on it, and the community would have enjoyed its most wanted feature for the last two years. Instead, VCV asked that VeeSeeVST stop competing against non-existent vaporware.
The last fork I know of is the Sonaremin, but it is better understood as a customized distribution of a VCV Rack build for the Raspberry Pi than as a fork, which is probably the reason why it was not hindered by VCV (as far as I know).
VCV is not typical of Open-Source or Free Software, even if it advertises itself as such. The license is GPL3, but the development process is entirely closed. The company has a built-in closed-source paid app store, a Jobs page on its site, and a development repository that has remained private for two years and refuses all contributions, making it impossible for the community to help out at all a project that is obviously stalled, yet that community is expected to refrain from exercising its legal right to compete against VCV: the community is asked to disregard the social contract of open-source that allowed VCV to gain so much traction in the first place.
Open-Source and free software are a culture of collaboration, not simply a set of one-sided licenses you can use to monetize your community’s labor and grow your business faster.
Hard to move on
It’s been incredibly hard to move on from this. I can’t hide this episode has been really difficult for me.
I barely had the heart to develop anything music related since quitting, and definitely didn’t have the heart to use VCV at all again, not even the modules I made. In fact, the first time I launched it since quitting was today, to screencap material for this article. I couldn’t possibly make good music with an instrument I’m angry at, so I didn’t even attempt to. I went back to making music with more traditional software, such as Reason.
I’ve spent a lot of time learning more about Renoise recently, too, a great DAW with a tracker interface, and I’m hoping to finish up two or three EP releases this year. But I didn’t work on any new music tool at all.
I channeled my interest in creative computing into other domains than music, for example, using machine learning tools to generate poetry pastiches with GPT-2.
Whenever I tried to resume working on music software, I’d just remember having received the “hide button” treatment as a response to all my efforts, and every time I remembered that, I felt too sick about it all to stick to the activity.
For a long while, I sincerely regretted having discovered this interest in modular synth design. I felt extremely stupid and guilty for getting involved in this and making long-term plans.
I used to be passionate about this topic, but now it just makes me feel like shit, and I want my passion back. Talking about my experiences openly to make sure they won’t just be lost to the hide button will definitely help.
It’s always terrifying to put yourself out there when you’re so visibly trans, and extremely frustrating to realize I’ll be better known for quitting this work than for the work itself, since the work was aborted before it had a change to truly get started.
I held back on publishing this article for a few months, hoping things could improve for the community I left, but people who still interact with it tell me that absolutely nothing improved. I asked all of them for a last confirmation of that fact today, before pressing the publish button.
So fuck if I’m just gonna quietly fade away out of fear when some man presses the hide button on me after I put in so much love into my work. People should know beforehand what they are deciding to support when they buy from VCV’s app store or contribute open-source labor to it.
No perfect alternative
Even if a community fork of VCV existed, I’d prefer to move on to something else.
Depending on your needs, many other options can replace VCV, but for my collection, none are good enough candidates.
I investigated avenues such as Reaktor, Cherry Audio, PureData, VST plugins, Synthedit, Reason Rack Extensions, MaxMSP, SuperCollider… but all of them have at least one critical issue making them incompatible with my goals.
For starters, many aren’t open-source.
Some like Cherry Audio have the guts to ask me to pay an additional fee for the privilege to release freebies for their platform.
Some like Reason won’t let individuals play with the SDK, only registered companies, yet they let in companies whose quality standards are laughable. CORRECTION: Reason Studios have dropped this policy in 2020: individuals can now legally try out the SDK.
Some do not have enough of a polished visual component to let me craft what I have in mind.
Some are just not modular enough for me to implement my ideas as discrete pieces you can easily combine.
Some like VST are impossible to get started with anymore, because newcomers are no longer allowed to use version 2.4, and nobody wanted version 3, nobody supports it, so new VST creators can only create VST 3 that won’t run anywhere, while incumbents are still allowed to release their stuff for the only version that matters.
A few people told me I should try hardware. That if I ported my software modules to Eurorack, they’d buy them immediately. But it’s not a realistic idea.
First, I know almost nothing about hardware and electronics. Second, I simply don’t have the kind of money for modular hardware.
But the most important reason is that I love software. The debate about hardware vs software should be about their respective trade-offs, their unique qualities, and their possible hybridization. It shouldn’t be about showing off your wealth with your expensive hardware bling to flex on the software peasants. Software is easy to hack, makes it easy to keep projects and sessions organized, sounds great, but is much harder to perform, and inspires people less, two drawbacks I was trying to work to improve with my modules.
Simply put, no alternative fits my goals enough to commit.
Discovering what’s next
Quitting visibly gave me frequent reminders people actually used and enjoyed what little I had already created, and many of the artists who made great songs with my modules never participated in the VCV community at all, because it is mostly technically minded, artists realize immediately they don’t belong in the VCV community. I’d find them on Twitter, YouTube, or Discord instead.
Those reminders gave me the kind of confidence in my work I could never have found in an environment that treated me like an incompetent nuisance, so I still want to get back into this domain without the negativity and confrontational attitude.
But how? It’d be incredibly difficult and time-consuming to make my own alternative from scratch given my current skills.
It took me a while to discover the key, the solution to resume working on my ideas without compromise. But I eventually discovered the answer to all my problems. And I must apologize in advance, because my hard-earned realization will be extremely nerdy, incredibly anti-climatic, and obvious in hindsight.
Here goes: I don’t have to work at audio rates at all.
Now, it might leave you a bit puzzled, and you might need a super reductive crash course about sound waves and programming languages before the implications make sense:
When speakers produce sound, they vibrate at a specific speed, making the air propagate soundwaves that reach our ears, because of Science. The speed of the vibration is what defines the pitch. For example, 440 times per second, or 440Hz, is the note A on the fourth octave. That number doubles each octave, so it ramps up quick.
Children can hear sounds up to 20,000Hz. The older you get, the lower that number. Myself, I can still hear up to 15,000Hz. And my dog can hear up to 40,000Hz.
His name is Ornstein, he is two years old, of a wonderful breed of Spitz dog named the Eurasier, descended from the Chow Chow, Samoyed and Keeshonden, and I love him so much.
To be able to reproduce a 20,000Hz wave properly, you must record it at least twice as fast, any slower would corrupt the recording. Computer audio normally operates at 44,100Hz to cover the entire human hearing range, so a synthesizer module calculates its internal state 44,100 times per second, and that makes those bad boys really hungry for CPU cycles, especially in a modular that can’t optimize performance by processing samples in batches. And if you want your music to be studio-quality, or at least dog-quality, you’ll want to render it at 96kHz, that’s twice the CPU usage.
But my own software? It is focused on the composition and modulation aspect, not on producing sound. The bulk of it has no reason to operate in perfect sync with audio! In fact, almost all the modules of my old collection have code telling them to run only a 1,000Hz. So why do I actually need to implement my ideas within an audio environment? I do not need to produce soundwaves directly, I’m working at the level of musical compositions!
And the realization solved many problems: by deciding that my system will focus only on the composition and live performance aspect, I’m no longer locked into high-performance thinking. Not only I don’t need to hitch a ride within an audio host, I also don’t need to use a difficult language such as C++ for everything. Using something that trades off CPU performance for programmer productivity is now a reasonable option, and that makes an incredible difference. Since I can work so much faster with a higher level language, it’s no longer a crazy endeavor to create my own standalone system from scratch.
My enthusiasm is almost only about discovering new possibilities in sequencing and live performance: a completely different field from sound synthesis. There’s still so much unexplored territory in sequencing, algorithmic composition, aleatoric and generative music, especially if it’s explored by an outsider looking to get real songs out of it, rather than a scholar, or a company trying to appeal to electronic music producers. Really, to try to explore audio processing at the same time would just be a distraction.
Disregarding the social issue, from a purely technical point of view, using VCV Rack wasn’t a mistake, there is value in tightly coupling sequencing to synthesis. To discard audio processing from the start entails a different set of trade-offs, and makes a fair amount of useful musical techniques impractical to perform.
Will the trade-offs I’m choosing be a mistake? I can’t rule out the risk they might be, on a purely technical level. But a hobby project should never leave you stressed out and emotionally drained, so that sounds like a good trade-off.
So, my real module collection will take the form of music software that produces no sound whatsoever.
Do you think it’s a hard sell?
I’m not sure about that, myself. If I look around me, in my room, there are three MIDI controllers, and I have a more in storage. Those devices can’t produce any sound on their own, and I never once considered it a problem, because MIDI has been the universal language of synthesis for longer than I have lived.
My master MIDI keyboard would not be more useful to me if it included a mediocre standalone synthesizer I would never use, and it would be harder to operate and more expensive if it included a high quality synthesizer.
So, for the same reason, I think I shouldn’t have any built-in sounds. Low-quality sound sources wouldn’t do my system justice, and high-quality ones would be a waste of effort.
All my software needs to do is generate MIDI, then it can integrate with any hardware or software. And of course, I can also generate OSC, CV, MPE, LSB CC, any acronym you throw at me.
There would be many advantages to this approach. I would be able to make use of aspects of the Eurorack metaphor that I like, such as cables, without being limited by an existing audio environment; without being limited by things such as the fixed vertical size of modules, the lack of touch support, or a vector engine struggling with rendering performance and drawing accuracy.
Ok, so, don’t laugh now. Instead of audio host software, I want to use use a video game engine.
Stop laughing please. I’m serious.
I have good reasons, but the most important one is that I want to make a beautiful instrument. You don’t build a guitar worthy of being taken on the stage out of particleboard and MDF. To build a truly intimate relationship to your instrument, it can’t simply satisfy the requirements of good ergonomics and acoustics. It must also be beautiful.
Separately from my work on sequencing, I have been learning more about Unreal Engine. I never released a finished product with it, only did a lot of experiments, including some level design with freebie 3D assets.
They’re totally unusable in a real videogame, but I love making those little levels out of canned assets, and a few mediocre 3D meshes of my own here and there.
It would not be my first choice if I wasn’t interested in learning Unreal Engine beyond the scope this project, of course. But it is much more suitable to the problem than you’d think. It helps that Unreal has excellent audio tools. You could even use its audio engine as a pretty decent modular synthesizer.
There’s even stuff like SYNTHSPACE, a VR modular synthesizer built with a game engine, that one is based on Unity. However, I’m not really interested in VR for my own work: I think VR is an intimate experience, not something you perform with for an audience. To make a visual performance with VR, you can show the performer, but her face would be concealed by the headset; you can show a live feed of what she’s seeing, but a live video feed from a VR headset is incredibly jittery if you’re not the one in command, to the point it can give you motion sickness; and you can show an alternative view of the the 3D environment for the audience, but it takes a lot more GPU resources to render things twice.
Rather than VR, I’m much more interested in touch input. Not the awkward groping you can do with your big grabby fingers on your phone, but precise input, on a pen tablet meant for drawing, with or without finger multitouch.
Performing VCV Rack with a touchscreen requires you to build your own fork of it to change a handful of global variables to be usable at all, despite being a fantastic way to perform it.
Touch has rarely been used to its full potential. It often focuses on toy-like interactions, provides touch targets that are too small or too big, widgets such as knobs that are difficult to operate with touch, unresponsive interfaces with extreme input latency, and it favors simple user-friendly motions instead of teaching you a complex vocabulary of advanced gestures.
What if touch were a true instrument instead? One that’s not afraid to require practice to master, and where your practice is rewarded with performances that would be impossible with a simpler vocabulary? And what if, instead of being a solo instrument, it were more of an orchestra conductor’s baton, allowing you to improvise an entire synthesizer song, if not an entire evening of music?
I don’t know exactly what form my system will take, but I have a general idea. Physically operated modules and cables are definitely a given, but fetishistically reproducing hardware I can’t afford isn’t my plan. I want cables to also carry data, not just control voltage, to explore further the idea of carrying complex information about scales and chords in my system.
I’m also thinking how the size of the modules themselves should not be set in stone, but adapt to your live performance needs, like how Reason lets you fold them, but more granular than having only two states. For example, what if enlarging a module could promote a space-efficient knob to a large fader that’s easier to perform with a mouse or with touch? What if, instead of having three different versions of my module Modulus Salomonis Regis, you could simply resize it to have the exact amount of nodes you want?
I would also like to do something about the problem of boilerplate connections. Very often, your modular system will have patchcables that do not represent a meaningful decision, and that you would be better off if it were possible to hardwire them, taking over the default routing only in exceptional circumstances. The prototypical example would be patchcables that carry clock information: to display them creates mental overhead. You almost certainly only have a single master clock. Making a reasonable default implicit would simplify things.
I want to remake my existent collection of modules for my system, but my existing collection can’t work in isolation.
For my collection to be any useful, I first need to remake a lot of basic utilities, such as clocks, LFOs, logic gates, sources of randomness, oscilloscopes, ADSR, all that good stuff. That’s my first order of business, and using a simpler language than C++ means none of them are a daunting prospect.
Remaking my collection comes second.
But the third part is the most exciting. I want to explore the dozens of ideas I had to give up on, and mentioned earlier. Esoteric and engaging ways to interact with music in a modular context, such as computer vision, multiplayer interactions, machine learning, gesture drawing, repurposed gaming controllers, physical interactions, participatory art.
Lots of people have done the hard work to provide open-source libraries that let us play with those ideas without requiring us to become experts in their field–all I need is to do is duct tape that hard work of theirs to an inspiring interface.
A frustration I had with generative music on a virtual modular, one I wanted to overcome with my collection, is that it lives in the moment, entirely unaware of the conventions of Western music beyond common time and scales. While the virtual modular can give you the freedom to experiment with xenharmony and microtonality, with complex time signatures and polyrhythms, and works very well with heavily formatted four-on-the-floor genres like house music, it doesn’t make it easy to improvise conventional songs with a complex groove, harmonic structure, and repeating parts.
I would prefer for my system to assume you are using 12-Tone Equal Temperament and a common time signature. Popular Western tradition as a form of sensible defaults. I don’t enjoy experimental music that’s entirely inaccessible to most people, I prefer weird music you don’t need to understand intellectually to feel. I don’t have to satisfy every esoteric use case.
I’d like to have a system where you can make a patch that’s a bit like a jazz standard to use as a springboard for a jam band improvisation: you could carefully craft in advance a hook, a chorus, a drum groove, a chord progression, a backbone for a piece that stays consistent from performance to performance, a framework that can be used as a point of departure for unique improvisations.
So, that’s what I have in mind. A modular sequencer, rather than a full synthesizer. Bring your own sound source, there’s no lack of great options.
Continuing with the mystical theme of my discontinued module collection, I’m thinking of calling it a Séanceur: an instrument possessed with a bit of my soul for you to summon, one that never fully yields to your control but always has your back, and that you grow to trust to propose weird unexpected ideas.
Unlike modules, I can’t make frequent small releases. It’s more of a long-term project before it becomes usable at all, and I don’t want to put it into people’s hands before it reaches my usual quality standards.
And this is a hobby project, there’s no grown-up money to be made with an esoteric instrument. I think of it more as a hobby craft I’m working on for myself, without much concern for other people’s needs. I’m open to discuss its design with anyone interested in the idea, but I’m only creating something I want to use myself. I’m not interested in making what others wish someone would make for them. There’s no business plan, no schedule, and no pressure to satisfy other people’s needs.
Once I get it off the ground, I hope it can foster a tiny little scene of like-minded artists. But it will progress at my own pace, I don’t want to pressure myself to work on a hobby that’s still stressful after my bad experiences with VCV.
I’ll be sure to keep you posted on my website, on Youtube, and on Twitter (if you can handle the firehose of high-context gay shitposting). Until then, I hope members of the VCV community will remember me for my positive contributions rather than for the way I was made to leave it.
—Aria Salvatrice <firstname.lastname@example.org>