The current discourse around AI in electronic music — staged most recently in by in MusicRadar, — sets up a binary: opaque generators like Suno and Udio on one side, "irrevocably human" output on the other, with self-trained models like Reinier Zonneveld's B2B clone and Holly Herndon's Holly+ as the moderate middle.
That's the wrong axis.
The artists quoted in the piece aren't really angry about generators. They're angry about opacity — training sets nobody consented to, no attribution back to source, century-old copyright trying to shape itself around a new kind of object. The AFEM AI Principles spell out the actual ask: consent, contracts, moral rights, credit and pay.
That's a transparency complaint, not a generator complaint. And once you frame it that way, a different cell in the table opens up.
| Opaque | Transparent | |
|---|---|---|
| Statistical | Suno, Udio | Holly+, self-trained models |
| Structural | — | a Petri net |
A self-trained model is better than Suno because the training set is known. But it's still a weights file. The generator is a black box you trust because you trust the artist.
A structural generator is a third thing entirely.
beats.bitwrap.io is generative music with the generator visible. Drum patterns are Euclidean rhythms encoded as token rings. Melodies walk a Markov chain constrained by music theory rules — chord-tone targeting on strong beats, stepwise motion on weak. Bass lines step chromatically between chord roots. Song structure is a linear Petri net that mutes and unmutes tracks at section boundaries.
There is no training data. There are no weights. The "creativity" lives in structural choices — which arcs, which transitions, which guards — and those choices are the artifact. Same genre + same seed = same track, every time, on every machine.
That is a categorical difference, not an aesthetic preference. A generator you can read is not the same kind of object as a generator you can only sample from.
One of the more interesting beats in the MusicRadar piece is Jay Ahern's offhand observation that modular synthesizers were the original generative music-makers. The article uses this to defang the AI panic — it's just another tool — but the comparison is sharper than that.
Petri nets are the formal model of modular patching. Concurrent token flow, conservation laws, deterministic firing under nondeterministic scheduling. A Buchla 200 patch is a Petri net, informally. beats.bitwrap.io makes that math explicit and playable in a browser.
This is the rhetorical wedge. The pro-AI camp says "tools are tools, get over it." The anti-AI camp says "but the training data is stolen." Both arguments are about statistical generators. A structural generator is older, deeper, and doesn't have either problem.
The principles read very differently when you hold them up against a Petri net instead of a weights file.
Consent matters. Training data must be a closed term in a known context. A Petri net has no training data. The model is the source. There is no pile of uncredited inputs sitting upstream of the output.
Credit and pay. Attribution is past-tense witnessing. The firing sequence either exists or it doesn't — every note that played is a transition that fired against an explicit guard, recorded in the token history. The fossil record has the bones still articulated. (For the formal version of why "past" is the right word here, see the tense decomposition.)
Moral rights apply. The generator is the artist's structural choice — these arcs, these weights, this Markov state, this Euclidean ring. There is no laundering layer between intent and output. You can't accidentally compose someone else's song because there is no someone else's song in the model.
The hard regulatory question Ahern hints at — AI will probably be needed to regulate AI — only exists when the generator is statistical. For a structural generator, the audit is the source.
Sam Thurlow in the same piece talks about AI "declining the friction between ideation and realization." That phrase only makes sense if the model is a separate object you sample from — something you have to coax toward what you want.
In a Petri net, there is no such gap. The model is the realization. You change the firing rule, you hear a different beat, immediately, deterministically. There's no ideation/realization distance because the structure is the music.
This connects to a longer thread on this blog: the case for small models over large ones. Finite, formal, inspectable objects that do one thing the same way every time. LLMs are powerful for fuzzy work. For composition, where you actually want to know why the kick lands on beat three, the small model wins by construction.
Ahern closes the MusicRadar piece hoping AI will help "bust genres open." It's a generous reading and worth taking seriously.
A Petri net does this differently. Genre in beats.bitwrap.io is a parameter set: BPM, scale type, root note, Euclidean drum hits-per-steps, melody density, swing, humanize, ghost notes, walking bass, modal interchange, tension curves. Move the parameters and you cross between genres without sampling between them. The interpolation is structural — it composes guards and conservation laws — not statistical, where you'd be averaging waveforms.
The same Euclidean ring that drives a techno kick also drives a bossa hihat; only the parameters change. Genre fluidity falls out of structural composition for free, with none of the licensing problems.
The phrase I keep wanting is generator you can read. The model is the artifact. The artifact is the music. The audit is the source. The discourse keeps trying to draw the line between AI and human — but the load-bearing line was always between statistical and structural, and the structural side has been there the whole time, hiding inside every modular synth ever patched.
Go listen to one at beats.bitwrap.io. The URL is the score.