Recent articles from danny.ayers.name.

100 Open Source Experimental VST Plugins

100 Open Source Experimental VST Plugins

Downspout covers all kinds of things : instruments and effects, audio & midi processors with an emphasis on generative tools. I wouldn't say any are finished, but they all work approximately as intended. They aren't exactly pretty and UI/UX is often poor, I've concentrated on core functionality. These things are primarily for my own use, though if anyone has any requests for improvements/fixes, I'll do what I can.

There are packages for Windows, MacOS & Linux built using GitHub Actions, but I've only tested building locally on Linux, running in Reaper (aside from initial dependency installation, this is just running an install.sh script). They are written in C++ against the DPF framework (it lacks the bells & whistles of JUCE, but being leaner has its advantages).

They have all been developed with AI assistance, but only a handful were fully vibe-coded (for v1). I don't think it's a coincidence that those were the least successful to date. I have a very iterative process - initial creation, get them working to a basic level, use them, note any problems or further requirements, revise. I'm working on them all concurrently (there is a very long TODO.md). I've mostly used Claude Code as the assistant, a little bit with Codex, OpenCode at times when cash flow is a problem (like today).

I just reached 100. Why so profligate?

I've been writing music software for decades (and designing electronics hardware) but only started trying plugins a couple of years ago. Initially I was only looking at fairly minimal LV2 plugins (Flues) because I'm on Linux. As it became apparent that AI assistants can be extremely helpful with these things, it seemed to make sense to shift to VSTs with something approching proper UIs. I produce music experimentally, instrument-building has always been part of my process. If I have a need or idea for a plugin, for sure I first go hunting for something that already exists (and/or foraging for related research papers). But rather than use something off the shelf, I'll typically write a custom requirements spec, have the assistant build it. I have the repo full of existing material, so I point Claude or whatever at the closest working plugin to what I'm after. With all the reference material in place, the assistant creates fast, I can go from idea to testing v1 in about half an hour. Then the iterations begin.

This isn't vibe-coding, it's (usually) very guided. Me, I do have some clue about what I'm doing (I am a coder by trade, in a past life studied DSP at university). Strategies, references and tests in place. On one recent occasion I asked Claude to create some plugins to complement ones I'd already got. It came up with 5 I think, all sounded promising so I said, go ahead. Worst of the bunch, it was a terrible idea (I was subsequently able to salvage something useful out of them, effectively un-vibing).

Regarding the plugin industry, I think AI assistants will be a net positive. The Interwebs are being flooded with vibe-coded slop, and people like me who might otherwise be in the market for pay-for products will make their own. But neither of these detracts much from the market for high quality plugins with good support and solid maintenance. AI assistants mean it will be easier for the commercial developers (and any open source houses) to develop and make better things at the top end. This should have the knock-on effect of lowering the prices for the normal consumer.

Bottom line for me is that it's good fun and allows me to create the music I want with reduced friction. I used earlier versions of the plugins on my latest album, Attone and am using them extensively in my current work-in-progress Tell the Bees.

100 Open Source Experimental VST Plugins

New

New

Everything below was written by AI, with human assistance

Dog walked, coffee made, and a pile of repos that all seem to have grown since I last looked.

Time for a round-up, mostly for my future self. Six things I've been working on lately. They overlap more than I planned.

JigDAW

JigDAW is a plugin format native to the web. A plugin is a URL. Do a GET on it and you get a Turtle profile saying what the plugin is, what it accepts and produces, and where its WebAssembly and AudioWorklet live, each with a sha384 digest. Fetching it is installing it. No registry.

There's a browser host, a second host that runs the same plugins as VST3, 27 worked plugins and a validator. The spec is at danja.github.io/jigdaw and you can try it live. It's also where I keep docs/danify.md, which is the reason this post sounds like me.

Downspout

Downspout is a bunch of mostly generative, algorithmic plugins built on DPF and VST3. Portable C++ cores, deterministic tests, thin wrappers, custom NanoVG UIs. Releases for Linux, macOS and Windows, though I've only tested the Linux one. Yes, I know. There are a couple of demos on YouTube: Jack's Dream and another example.

Valis

Valis (Virtual Analog LLM Integrated System) is a standalone app and plugin for building virtual analog circuits. A circuit is a Turtle description of functional blocks and the arcs between their ports, reusing the LV2 vocabulary where it can. You get three views of the same thing: knobs, a node-and-arc diagram, and the Turtle itself. Everything the UI does is also available over MCP, so an LLM can design a circuit and build it. Whether it's any good at that is a separate question. There's a video demo and the code is on GitHub.

Plugin Universe

Plugin Universe is an open database of DAW plugins. It's at 756 plugins and 63,297 triples, and 288 of the measurements were taken by actually running the binaries. Facts are CC0. The ontology is the contract and the code follows it, rather than writing a schema and filling it in or asking a language model and hoping. Plugin parameters are LV2's own terms, categories are SKOS. Source is here.

dim

dim is Danny's Information Manager, so the name is honest at least. It's the same Fuseki, FAISS and Ollama shape as Plugin Universe, but pointed at my own stuff: bookmarks, outlines, tasks, wiki, news and blog, one named graph each, all in one SPARQL store. It grew out of a giant workflowy.md I'd been hoarding links in. It has an MCP server too, which is how Claude is able to go and fetch my notes.

peasant

peasant is an LLM coding harness for the poor. Same shape as OpenCode or Claude Code, but it runs on my old CPU with no SSE4.2, where the Bun-compiled alternatives die with SIGILL before printing a thing. So: plain Node, zero dependencies, and free providers like Groq and Mistral. All fourteen probe checks pass on every Node from 18 to 26. It's rough, but it answers.


I've added a note on each to my CV page. Back to the plugins.

New

Constitution

Constitution

The other day I had a post blocked on Reddit because is was clearly AI-generated text. This was a little annoying as it was an overview of a spec which contained all the information I wished to convey in a well-ordered form. Ok, it was a bit annoying stylistically.

So I came up with a workaround. I got Claude to read 262 of my blog posts, and boil them down into a set of rules ( https://github.com/danja/jigdaw/blob/main/docs/danify.md ). Claude then used those rules to rewrite the opening of the US Constitution (Article I, Sections 1 and 2) as if I'd written it. I've not checked it against a lawyer.


Article I, Section 1

Right, first thing. All the law-making power in this setup goes to a Congress. It comes in two halves, a Senate and a House of Representatives. That's it, nobody else gets to make laws.

Article I, Section 2

The House is made up of members chosen every second year by the people of the states. Whoever is allowed to vote for the biggest chamber of their own state's legislature can vote for the House too. Simple enough, they just borrow the state's list.

To be a Representative you have to be at least 25, you must have been a US citizen for seven years, and you have to live in the state you're chosen for when the election comes round.

Next, how many seats each state gets, and how the tax bill gets split. Both go by population. Population means everyone who's free, including those bound to a term of service, but leaving out Indians who aren't taxed, plus three fifths of "all other Persons". Ew. That last bit is the enslaved, and it's every bit as grim as it sounds. The 14th Amendment later did away with it.

The head count happens within three years of the first meeting of Congress, then again every ten years, in whatever way Congress decides by law. There's a cap too: no more than one Representative for every 30,000 people, but every state gets at least one. Until the first count was done, the numbers were fixed as follows:

  • New Hampshire, 3
  • Massachusetts, 8
  • Rhode Island and Providence Plantations, 1
  • Connecticut, 5
  • New York, 6
  • New Jersey, 4
  • Pennsylvania, 8
  • Delaware, 1
  • Maryland, 6
  • Virginia, 10
  • North Carolina, 5
  • South Carolina, 5
  • Georgia, 3

If a seat falls empty mid-term, the state's governor calls an election to fill it.

Last bit. The House picks its own Speaker and its other officers. It's also the only body that can impeach.

Constitution

Stacks

Stacks

On Sunday morning I woke with an idea I had to try out : Plugin Universe. Basically an online database of DAW plugins. I wrote a handful of docs with the general plan.

I decided to use the core of the bloated Semem, the SPARQL and Semantic Search (embedding) infrastructure. Most of Sunday and Monday were spent ploughing through this with Claude. But then I ran out of tokens: reset on Wednesday.

So last night I went for beers.

Today, Plan B : try OpenCode. It took a little while, but it's now running with model "Muse Spark 1.3 Free". The only thing is, with this being a new setup I didn't want to mess up the already working code for Plugin Universe. For a while now I've wanted to do something useful with a list of 5,000+ bookmarks I've accumulated (on Workflowy, it's convenient to Share to..).

This time to really keep streamlined, I asked the assistant to build a knowledgebase using the core code of Plugin Universe.

OpenCode seems to be working pretty well with this model, just a handful of rate limit exceeded messages.

Heh, nice message : "...measured nonsense scores 0.562 on this corpus..."

codebase-memory-mcp

Stacks

Current Activities

Current Activities

I've not been very good at updating here recently so I'll bundle this up.

What I should have been doing

  1. Cleaning this house (it is a bloody mess).
  2. Tidying the garden and field (it is one big jungle).
  3. Finding some paid work (I am skint).
  4. Practicing clarinet, guitar and keyboards (I am lazy).

But I have been busy.

What I have been doing

My ADHD means sticking to a routine is rather alien to me, but aside from the above, I have been relatively good at it recently. I wake up at 7 and take my Ritalin, make a coffee, doomscroll, get out of bed around 9. I take Claudio out for two walks a day (short, it's hard work in this heat). Beer cellar with Jacopo on a Saturday night, walk up to Silvano's bar in Castiglione on a Sunday (when I have the energy).

claudio

Most mornings I have a couple of hours in the music room. This mostly amounts to practice of sorts, though I am frequently uploading a solo jam up to YouTube, over here. I'm slowly working on the not-too-difficult second album (here's the first : Attone). This will be themed - inspired by mythical medieval creatures, such as those from the Aberdeen Bestiary. So far I have done the Bonnacon and the Griffin.

music room

Most of the rest of the day I spend at the computer. Current projects :

Research into potential earthquake prediction

This is something I've been looking anto, on and off, for a few years now. I recently decided to get back to it. There are two things which I think may make a difference : extended data (natural radio and astronomical) and recent developments in AI (transformer model, GPT-aided coding). I'm pulling seismic and radio data from Italy and Japan for model training as well as creating an avalanche-based simulator I'm hoping will be suitable for generating synthetic data. It's still early days in what is bound to be a long-term project (even if it works). Details at ELFQuake.

map

Generative music software

The main thrust of this has been Downspout, a set of Digital Audio Workstation (DAW) plugins. All very experimental.

I usually use Reaper DAW, but it can get a bit clunky when setting up the generative plugins. Given that I have an AI assistant to help (Codex), I thought I'd have a go at making a tool designed for this purpose from the bottom up. I already had a node & arc graph-oriented system (designed mostly for text processing) Transmissions so I used that as a reference and made Transmission.

transmission screenshot

Current Activities

Browse earlier articles