<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>songcode blog</title>
  <subtitle>How songcode works, who it is for, and how it compares. Sources included.</subtitle>
  <link href="https://songco.de/blog/" />
  <link rel="self" href="https://songco.de/blog/feed.xml" />
  <id>https://songco.de/blog/</id>
  <updated>2026-11-11T00:00:00Z</updated>
  <author><name>songcode</name></author>
  <entry>
    <title>Introducing songcode</title>
    <link href="https://songco.de/blog/introducing-songcode/" />
    <id>https://songco.de/blog/introducing-songcode/</id>
    <published>2026-11-11T00:00:00Z</published>
    <updated>2026-11-11T00:00:00Z</updated>
    <summary>Describe a track and get it back as code you can read, edit and play in your browser.</summary>
    <content type="html">&lt;p&gt;songcode turns a prompt into a track. The track arrives as source code: a short program, usually a few dozen lines at most, that your browser plays the moment it lands.&lt;/p&gt;
&lt;p&gt;Type “driving techno. rolling bass, metallic hats, a single dark stab.” A language model writes something like this:&lt;/p&gt;
&lt;pre class=&quot;code&quot; data-lang=&quot;strudel&quot;&gt;&lt;code&gt;&lt;span class=&quot;tok-comment&quot;&gt;// title: iron oxide&lt;/span&gt;
setcpm(&lt;span class=&quot;tok-number&quot;&gt;130&lt;/span&gt;/&lt;span class=&quot;tok-number&quot;&gt;4&lt;/span&gt;)
form(&lt;span class=&quot;tok-string&quot;&gt;'loop:8'&lt;/span&gt;)

kick: s(&lt;span class=&quot;tok-string&quot;&gt;&amp;quot;bd*4&amp;quot;&lt;/span&gt;).bank(&lt;span class=&quot;tok-string&quot;&gt;&amp;quot;RolandTR909&amp;quot;&lt;/span&gt;).gain(.&lt;span class=&quot;tok-number&quot;&gt;9&lt;/span&gt;)
  .duckorbit(&lt;span class=&quot;tok-number&quot;&gt;2&lt;/span&gt;).duckdepth(.&lt;span class=&quot;tok-number&quot;&gt;7&lt;/span&gt;).duckattack(.&lt;span class=&quot;tok-number&quot;&gt;12&lt;/span&gt;)

hats: s(&lt;span class=&quot;tok-string&quot;&gt;&amp;quot;hh*16&amp;quot;&lt;/span&gt;).bank(&lt;span class=&quot;tok-string&quot;&gt;&amp;quot;RolandTR909&amp;quot;&lt;/span&gt;)
  .gain(&lt;span class=&quot;tok-string&quot;&gt;&amp;quot;[.34 .13 .2 .15]*4&amp;quot;&lt;/span&gt;).hpf(&lt;span class=&quot;tok-number&quot;&gt;420&lt;/span&gt;).degradeBy(.&lt;span class=&quot;tok-number&quot;&gt;15&lt;/span&gt;)

clap: s(&lt;span class=&quot;tok-string&quot;&gt;&amp;quot;~ cp ~ cp&amp;quot;&lt;/span&gt;).bank(&lt;span class=&quot;tok-string&quot;&gt;&amp;quot;RolandTR909&amp;quot;&lt;/span&gt;).late(.&lt;span class=&quot;tok-number&quot;&gt;008&lt;/span&gt;).room(.&lt;span class=&quot;tok-number&quot;&gt;3&lt;/span&gt;).gain(.&lt;span class=&quot;tok-number&quot;&gt;42&lt;/span&gt;)

bass: note(&lt;span class=&quot;tok-string&quot;&gt;&amp;quot;c1*16&amp;quot;&lt;/span&gt;).s(&lt;span class=&quot;tok-string&quot;&gt;&amp;quot;sawtooth&amp;quot;&lt;/span&gt;)
  .lpf(sine.range(&lt;span class=&quot;tok-number&quot;&gt;320&lt;/span&gt;, &lt;span class=&quot;tok-number&quot;&gt;1500&lt;/span&gt;).slow(&lt;span class=&quot;tok-number&quot;&gt;8&lt;/span&gt;)).lpq(&lt;span class=&quot;tok-number&quot;&gt;7&lt;/span&gt;)
  .decay(.&lt;span class=&quot;tok-number&quot;&gt;08&lt;/span&gt;).sustain(&lt;span class=&quot;tok-number&quot;&gt;0&lt;/span&gt;).orbit(&lt;span class=&quot;tok-number&quot;&gt;2&lt;/span&gt;).gain(.&lt;span class=&quot;tok-number&quot;&gt;6&lt;/span&gt;)

stab: note(&lt;span class=&quot;tok-string&quot;&gt;&amp;quot;&amp;lt;[c3,eb3,g3] ~ ~ [bb2,d3,f3]&amp;gt;&amp;quot;&lt;/span&gt;).s(&lt;span class=&quot;tok-string&quot;&gt;&amp;quot;square&amp;quot;&lt;/span&gt;).hpf(&lt;span class=&quot;tok-number&quot;&gt;330&lt;/span&gt;)
  .room(.&lt;span class=&quot;tok-number&quot;&gt;45&lt;/span&gt;).delay(.&lt;span class=&quot;tok-number&quot;&gt;3&lt;/span&gt;).delaytime(.&lt;span class=&quot;tok-number&quot;&gt;375&lt;/span&gt;).gain(.&lt;span class=&quot;tok-number&quot;&gt;4&lt;/span&gt;)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That is the whole track: a tempo, a form, and five named stems. No audio file sits behind it. Your browser reads those lines and makes the sound live, with oscillators, filters and drum machine samples. Change &lt;code&gt;130&lt;/code&gt; to &lt;code&gt;124&lt;/code&gt; and the tempo drops. Change &lt;code&gt;&amp;quot;bd*4&amp;quot;&lt;/code&gt; to &lt;code&gt;&amp;quot;bd(3,8)&amp;quot;&lt;/code&gt; and the kick leaves the grid.&lt;/p&gt;
&lt;h2 id=&quot;what-sets-it-apart&quot;&gt;What sets it apart&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;The output is source.&lt;/strong&gt; Text-to-music services hand you a rendered recording. You keep it or you roll again. songcode hands you the thing that makes the sound, so a track that is almost right is one edit away from right.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;There is no audio model.&lt;/strong&gt; We trained nothing, and no recording passes through songcode. The model that writes your track is a general-purpose language model from Anthropic or OpenAI, the same kind that writes Python, and it outputs text. We wrote down &lt;a href=&quot;https://songco.de/blog/we-trained-nothing/&quot;&gt;exactly what that claim covers&lt;/a&gt;, including where it stops.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It is built for people who open the lid.&lt;/strong&gt; If you own a cheap synth and have opinions about its firmware, you already know why source beats a bounce. &lt;a href=&quot;https://songco.de/blog/for-people-who-fiddle/&quot;&gt;That post is here&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;what-you-can-do-today&quot;&gt;What you can do today&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt;Generate a loop built to run for ten minutes without wearing out, or a full arranged track of three to five minutes.&lt;/li&gt;&lt;li&gt;Pick from 51 genres in nine families: techno, house, trance, bass, hip hop and breaks, synth, global, funk and jazz, ambient and experimental.&lt;/li&gt;&lt;li&gt;Steer with 30 advanced controls, from tempo and scale to drum machine, swing, filter movement and sidechain pump. Anything you leave alone stays the model’s call.&lt;/li&gt;&lt;li&gt;Edit the code while it plays and apply the change without stopping.&lt;/li&gt;&lt;li&gt;Switch from code to stems and work on the same track as a mixer and a piano roll: mute, solo, set levels, draw notes, or regenerate one stem with a direction. Note edits are written back into the code.&lt;/li&gt;&lt;li&gt;Trust the first play a little more. Each new track is compiled and tested in your browser before you hear it, and the model gets one pass to repair what the test finds.&lt;/li&gt;&lt;li&gt;Save a track and get a link. Whoever opens it gets the source too, and can remix it.&lt;/li&gt;&lt;li&gt;Download the source, or render a WAV or MP3 in your browser, faster than real time. Nothing is uploaded.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;songcode runs on your own API key from Anthropic or OpenAI. The key stays in your browser, travels with each request, and is never stored on our side.&lt;/p&gt;
&lt;h2 id=&quot;what-it-does-not-do&quot;&gt;What it does not do&lt;/h2&gt;
&lt;p&gt;No vocals. No lyrics. No guitars that would fool anyone. Most of the genres are electronic because that is what synthesis and drum machines do well, and the ones that are not (bossa, jazz, funk) come out sounding like a good keyboard player’s version of them. If you need a finished song with a singer in thirty seconds, Suno will serve you better, and we say so plainly in &lt;a href=&quot;https://songco.de/blog/what-songcode-cant-do/&quot;&gt;what songcode can’t do&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;why-code&quot;&gt;Why code&lt;/h2&gt;
&lt;p&gt;Electronic music has been written as code for a long time. songcode stands on &lt;a href=&quot;https://strudel.cc&quot; rel=&quot;noopener&quot;&gt;Strudel&lt;/a&gt;, the browser port of TidalCycles, a pattern language that live coders have performed with for years. One line of it can hold a drum part, its accents and the way it changes every fourth bar.&lt;/p&gt;
&lt;p&gt;That density is what makes this work. A pattern language is compact enough for a language model to write well and plain enough for a person to read. The model does the first draft. You get a track and the reasons it sounds the way it does, on the same screen.&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>From prompt to pattern</title>
    <link href="https://songco.de/blog/how-songcode-works/" />
    <id>https://songco.de/blog/how-songcode-works/</id>
    <published>2026-11-11T00:00:00Z</published>
    <updated>2026-11-11T00:00:00Z</updated>
    <summary>What happens between the moment you press generate and the moment you hear a kick drum.</summary>
    <content type="html">&lt;p&gt;A songcode track goes through three machines: ours, a model provider’s, and yours. Only yours makes sound.&lt;/p&gt;
&lt;h2 id=&quot;1-your-prompt-meets-a-written-doctrine&quot;&gt;1. Your prompt meets a written doctrine&lt;/h2&gt;
&lt;p&gt;When you press generate, your browser sends the prompt, the genre, the length and any advanced settings to a small server program (a Cloudflare Worker). The Worker assembles what the model will read.&lt;/p&gt;
&lt;p&gt;Most of that is a document we call the doctrine. With its list of sounds it runs to about 4,000 words, and it has four parts.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;An output contract and a song format.&lt;/strong&gt; Line one is a title. Everything after it is runnable code, no prose. A song is a tempo, a form, shared material and stems, and each instrument is one named stem: &lt;code&gt;kick:&lt;/code&gt;, &lt;code&gt;bass:&lt;/code&gt;, &lt;code&gt;stab:&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A reference.&lt;/strong&gt; Every function, drum machine and sound the model may use. This part matters more than it looks, and the next section explains why.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Mixing and groove rules.&lt;/strong&gt; The things a producer learns in the first few years, written as instructions. A few, verbatim:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;One sub at a time. Only the kick and the bass live below 120 Hz.&lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;p&gt;Never let every stem be busy at once. Density is a dial you move across the song.&lt;/p&gt;&lt;/blockquote&gt;
&lt;blockquote&gt;&lt;p&gt;Silence is an instrument. A beat of nothing before a drop does more than any riser.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;A mode.&lt;/strong&gt; Loops and full tracks get different instructions. A loop has to sound finished in bar one and survive ten minutes of repetition. A full track needs an intro a DJ can mix, a breakdown where the kick leaves, and one element held back until the peak.&lt;/p&gt;
&lt;p&gt;On top of the doctrine sits a brief for your genre: a tempo range, a drum kit, a palette of sounds, the move that defines the style. Then your settings. Then your prompt.&lt;/p&gt;
&lt;h2 id=&quot;2-why-the-reference-is-checked-by-hand&quot;&gt;2. Why the reference is checked by hand&lt;/h2&gt;
&lt;p&gt;Language models invent function names. In most programming that is a loud failure: the code throws an error and you fix it.&lt;/p&gt;
&lt;p&gt;Music code fails quietly. Ask Strudel to arpeggiate with &lt;code&gt;.arp(&amp;quot;up&amp;quot;)&lt;/code&gt; and nothing complains. Nothing plays either. A drum machine name that is one character off gives you a bar of silence where the snare should be.&lt;/p&gt;
&lt;p&gt;So the model is told to use only what the reference names, and the reference lists the traps by name. Its line on arpeggios ends: “A mode name like &lt;code&gt;.arp(&amp;quot;up&amp;quot;)&lt;/code&gt; is silent.”&lt;/p&gt;
&lt;h2 id=&quot;3-a-language-model-writes-the-track&quot;&gt;3. A language model writes the track&lt;/h2&gt;
&lt;p&gt;The Worker sends the assembled prompt to Anthropic or OpenAI, using the API key you supplied, and streams the reply back as it is written. You watch the code arrive line by line.&lt;/p&gt;
&lt;p&gt;The models are general-purpose language models. songcode offers three tiers per provider: fast, balanced and best. A bigger model takes longer and tends to write better arrangements.&lt;/p&gt;
&lt;p&gt;The key is yours. It lives in your browser’s storage, rides along as a header on each request, and is forwarded to the provider. The Worker does not store it or log it.&lt;/p&gt;
&lt;h2 id=&quot;4-your-browser-tests-it-before-you-hear-it&quot;&gt;4. Your browser tests it before you hear it&lt;/h2&gt;
&lt;p&gt;A written rule is a request. The test is what holds. When the last line arrives, the engine in your browser compiles the track and walks every stem through the whole song without making a sound. It is looking for three things: a method that does not exist, a sound that does not exist, and a stem that never plays a note.&lt;/p&gt;
&lt;p&gt;A clean track goes straight to play, and the status line reports how many stems were checked. If the test finds errors, the track goes back to the model once with the list of problems, and the model fixes its own work. That is a second model call on your key, and it happens only when needed. songcode keeps whichever version has fewer problems.&lt;/p&gt;
&lt;p&gt;The test catches broken. It does not catch boring. A track can pass every check and still be dull, and that part is on you and the editor.&lt;/p&gt;
&lt;h2 id=&quot;5-your-browser-plays-it&quot;&gt;5. Your browser plays it&lt;/h2&gt;
&lt;p&gt;The code is written in &lt;a href=&quot;https://strudel.cc&quot; rel=&quot;noopener&quot;&gt;Strudel&lt;/a&gt;’s pattern language. Each stem compiles to a pattern, and a pattern is a function: give it a span of time, get back the events that happen in it. songcode’s transport asks every stem what happens in the next fraction of a second and schedules the answers on the Web Audio engine built into your browser.&lt;/p&gt;
&lt;p&gt;Every stem gets its own channel in a mixer, with its own level, reverb and delay. The channels meet at a master limiter set just under full scale. That is the whole signal chain.&lt;/p&gt;
&lt;p&gt;Sound comes from two places:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Synthesis.&lt;/strong&gt; Oscillators, FM, filters with envelopes, a plucked-string model, reverb, delay, distortion. songcode adds its own patches on top of Strudel’s: four drum kits and 53 instruments, from an acid bass to a string machine. All of it is computed on your machine as the track plays.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Samples of single sounds.&lt;/strong&gt; A TR-909 kick, a clave, a piano note, a marimba bar. These are short recordings of instruments. Most ship with Strudel’s sample library. An acoustic drum kit, a kalimba and a marimba come from &lt;a href=&quot;https://github.com/sgossner/VCSL&quot; rel=&quot;noopener&quot;&gt;VCSL&lt;/a&gt;, a CC0 sample library.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;No recording of the finished track exists until you export one. The export is rendered in your browser too, faster than real time.&lt;/p&gt;
&lt;h2 id=&quot;what-the-server-never-sees&quot;&gt;What the server never sees&lt;/h2&gt;
&lt;p&gt;The Worker handles text: your prompt on the way in, code on the way out. It keeps a library of saved tracks, which are also text, and it counts requests per IP address so nobody can use it as an open relay. Audio never touches it, because there is no audio until your browser makes some.&lt;/p&gt;
&lt;h2 id=&quot;what-this-design-buys&quot;&gt;What this design buys&lt;/h2&gt;
&lt;p&gt;A track is a text request, so it is small and quick to generate. The result is a kilobyte or two. Editing costs nothing: changing a filter cutoff is a keystroke, with no second trip to a model.&lt;/p&gt;
&lt;p&gt;It also sets the limits. The engine plays synths and samples, so that is what songcode sounds like. &lt;a href=&quot;https://songco.de/blog/what-songcode-cant-do/&quot;&gt;The limits get their own post&lt;/a&gt;.&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>We trained nothing</title>
    <link href="https://songco.de/blog/we-trained-nothing/" />
    <id>https://songco.de/blog/we-trained-nothing/</id>
    <published>2026-11-11T00:00:00Z</published>
    <updated>2026-11-11T00:00:00Z</updated>
    <summary>songcode has no audio model. Here is exactly what that claim covers, and where it stops.</summary>
    <content type="html">&lt;p&gt;The claim, in full: songcode has no audio model. We trained nothing. A general-purpose language model writes code, and your browser plays that code with synths and drum machine samples.&lt;/p&gt;
&lt;p&gt;Each sentence there is doing a job. This post goes through them.&lt;/p&gt;
&lt;h2 id=&quot;no-audio-model&quot;&gt;No audio model&lt;/h2&gt;
&lt;p&gt;Services like Suno and Udio run models that generate sound directly. To learn what a hi-hat or a human voice is, a model of that kind studies a very large number of recordings. Which recordings, and on what terms, is the argument the music industry has been having in court since 2024.&lt;/p&gt;
&lt;p&gt;songcode has no model of that kind. No recording goes in when you generate, and none comes out until your own browser renders one.&lt;/p&gt;
&lt;h2 id=&quot;we-trained-nothing&quot;&gt;We trained nothing&lt;/h2&gt;
&lt;p&gt;songcode does not train or fine-tune any model. It sends text to a language model made by Anthropic or OpenAI and gets text back.&lt;/p&gt;
&lt;h2 id=&quot;where-the-sound-comes-from&quot;&gt;Where the sound comes from&lt;/h2&gt;
&lt;p&gt;Two sources, both in your browser.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Synthesis.&lt;/strong&gt; Oscillators, filters, envelopes, FM, reverb, delay. This is arithmetic. A sawtooth wave is a formula. songcode’s own drum kits and instrument patches are built this way, with no recordings in them.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Samples of single sounds.&lt;/strong&gt; A TR-909 kick drum. A clave. A piano note. A marimba bar. These are short recordings of instruments. Most come from the sample library that ships with &lt;a href=&quot;https://strudel.cc&quot; rel=&quot;noopener&quot;&gt;Strudel&lt;/a&gt;, the open source engine songcode runs on. An acoustic drum kit, a kalimba and a marimba come from &lt;a href=&quot;https://github.com/sgossner/VCSL&quot; rel=&quot;noopener&quot;&gt;VCSL&lt;/a&gt;, a CC0 sample library. We say “synths and drum machine samples” and never “fully synthesized”, because the second one would be false.&lt;/p&gt;
&lt;h2 id=&quot;where-the-claim-stops&quot;&gt;Where the claim stops&lt;/h2&gt;
&lt;p&gt;Four places.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The language models have training data of their own.&lt;/strong&gt; Anthropic and OpenAI train their models on very large amounts of data. We do not train those models and we cannot audit what went into them. songcode uses them for text only: text in, text out. What they know about techno they presumably learned the way they learned everything else: from writing. Music theory, synthesis manuals, forum threads, and code, including code the live coding community has published over the years. When a model writes a convincing acid line, it is working from how people have described and notated the form in text.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Those companies have copyright disputes of their own.&lt;/strong&gt; Music publishers including Concord and Universal sued Anthropic in October 2023 over song lyrics, and that case is still running. In November 2025 a Munich court ruled for the German collecting society GEMA against OpenAI, also over lyrics, and that ruling is under appeal. Lyrics are text, and songcode writes none. You should still know who is upstream of us.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A language model can write notes.&lt;/strong&gt; It cannot reproduce a recorded song, a voice or a performance. Its output is text, and the engine has oscillators and short samples to play that text with. Notes are different. A model that knows a famous riff as a sequence of pitches could type it out, the same way a person at a keyboard could. Compositions are protected whoever types them, so prompting for someone’s melody is on you. What songcode adds is visibility: every note in a track is on your screen, in plain text, where you can check it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Strudel’s library includes a few drum breaks.&lt;/strong&gt; Almost everything in it is a single hit or a single note. The exception is a small set of break loops: short stretches of drumming sampled from commercial records. songcode’s model is not told they exist, and when a genre calls for a breakbeat the model writes it hit by hit on a drum kit. The engine will still play one of those loops if you type its name into the code yourself.&lt;/p&gt;
&lt;h2 id=&quot;what-a-style-prompt-gets-you&quot;&gt;What a style prompt gets you&lt;/h2&gt;
&lt;p&gt;Ask for dub techno and you get a muffled kick, one chord stab and a lot of filtered delay. That is the genre as people describe it, and genre conventions belong to nobody.&lt;/p&gt;
&lt;p&gt;Type an artist’s name into a prompt and the model answers with what has been written about that artist’s sound: the tempo, the drum machine, the kind of chords. It works from description. It has no recording to imitate, and there is no voice cloning because there are no voices.&lt;/p&gt;
&lt;h2 id=&quot;why-we-bother-saying-it-this-carefully&quot;&gt;Why we bother saying it this carefully&lt;/h2&gt;
&lt;p&gt;“Ethical AI music” has become a slogan, and slogans get vague. Every service in this field now describes its training data in reassuring words. Some of those descriptions are specific and checkable. Some are a single sentence.&lt;/p&gt;
&lt;p&gt;Ours is checkable. Open a track and read it. The file contains note names, drum hits, filter values and effect settings. That file is the entire output of the AI.&lt;/p&gt;
&lt;p&gt;We put the other services’ descriptions side by side, in their own words, in &lt;a href=&quot;https://songco.de/blog/ai-music-map-2026/&quot;&gt;the AI music map&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;sources&quot;&gt;Sources&lt;/h2&gt;
&lt;p&gt;Checked 11 November 2026.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://www.musicbusinessworldwide.com/anthropic-must-face-music-publishers-copyright-claims-after-judge-denies-dismissal-motion&quot; rel=&quot;noopener&quot;&gt;Music Business Worldwide on the music publishers’ case against Anthropic&lt;/a&gt; and the &lt;a href=&quot;https://www.chartlex.com/blog/business/music-industry-ai-lawsuits-tracker-2026&quot; rel=&quot;noopener&quot;&gt;Chartlex litigation tracker&lt;/a&gt; for case status.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.reedsmith.com/our-insights/blogs/viewpoints/102nfis/gema-notches-a-second-transatlantic-ai-copyright-win-in-germany/&quot; rel=&quot;noopener&quot;&gt;Reed Smith on the GEMA rulings in Munich&lt;/a&gt;, including the OpenAI appeal.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://strudel.cc&quot; rel=&quot;noopener&quot;&gt;Strudel&lt;/a&gt;, the engine and its sample library.&lt;/li&gt;&lt;/ul&gt;</content>
  </entry>
  <entry>
    <title>How to read a track</title>
    <link href="https://songco.de/blog/how-to-read-a-track/" />
    <id>https://songco.de/blog/how-to-read-a-track/</id>
    <published>2026-11-11T00:00:00Z</published>
    <updated>2026-11-11T00:00:00Z</updated>
    <summary>Five stems of techno, taken apart one at a time. No Strudel experience needed.</summary>
    <content type="html">&lt;p&gt;Here is a complete loop. It is the kind of thing songcode writes for “driving techno. rolling bass, metallic hats, a single dark stab.”&lt;/p&gt;
&lt;pre class=&quot;code&quot; data-lang=&quot;strudel&quot;&gt;&lt;code&gt;&lt;span class=&quot;tok-comment&quot;&gt;// title: iron oxide&lt;/span&gt;
setcpm(&lt;span class=&quot;tok-number&quot;&gt;130&lt;/span&gt;/&lt;span class=&quot;tok-number&quot;&gt;4&lt;/span&gt;)
form(&lt;span class=&quot;tok-string&quot;&gt;'loop:8'&lt;/span&gt;)

kick: s(&lt;span class=&quot;tok-string&quot;&gt;&amp;quot;bd*4&amp;quot;&lt;/span&gt;).bank(&lt;span class=&quot;tok-string&quot;&gt;&amp;quot;RolandTR909&amp;quot;&lt;/span&gt;).gain(.&lt;span class=&quot;tok-number&quot;&gt;9&lt;/span&gt;)
  .duckorbit(&lt;span class=&quot;tok-number&quot;&gt;2&lt;/span&gt;).duckdepth(.&lt;span class=&quot;tok-number&quot;&gt;7&lt;/span&gt;).duckattack(.&lt;span class=&quot;tok-number&quot;&gt;12&lt;/span&gt;)

hats: s(&lt;span class=&quot;tok-string&quot;&gt;&amp;quot;hh*16&amp;quot;&lt;/span&gt;).bank(&lt;span class=&quot;tok-string&quot;&gt;&amp;quot;RolandTR909&amp;quot;&lt;/span&gt;)
  .gain(&lt;span class=&quot;tok-string&quot;&gt;&amp;quot;[.34 .13 .2 .15]*4&amp;quot;&lt;/span&gt;).hpf(&lt;span class=&quot;tok-number&quot;&gt;420&lt;/span&gt;).degradeBy(.&lt;span class=&quot;tok-number&quot;&gt;15&lt;/span&gt;)

clap: s(&lt;span class=&quot;tok-string&quot;&gt;&amp;quot;~ cp ~ cp&amp;quot;&lt;/span&gt;).bank(&lt;span class=&quot;tok-string&quot;&gt;&amp;quot;RolandTR909&amp;quot;&lt;/span&gt;).late(.&lt;span class=&quot;tok-number&quot;&gt;008&lt;/span&gt;).room(.&lt;span class=&quot;tok-number&quot;&gt;3&lt;/span&gt;).gain(.&lt;span class=&quot;tok-number&quot;&gt;42&lt;/span&gt;)

bass: note(&lt;span class=&quot;tok-string&quot;&gt;&amp;quot;c1*16&amp;quot;&lt;/span&gt;).s(&lt;span class=&quot;tok-string&quot;&gt;&amp;quot;sawtooth&amp;quot;&lt;/span&gt;)
  .lpf(sine.range(&lt;span class=&quot;tok-number&quot;&gt;320&lt;/span&gt;, &lt;span class=&quot;tok-number&quot;&gt;1500&lt;/span&gt;).slow(&lt;span class=&quot;tok-number&quot;&gt;8&lt;/span&gt;)).lpq(&lt;span class=&quot;tok-number&quot;&gt;7&lt;/span&gt;)
  .decay(.&lt;span class=&quot;tok-number&quot;&gt;08&lt;/span&gt;).sustain(&lt;span class=&quot;tok-number&quot;&gt;0&lt;/span&gt;).orbit(&lt;span class=&quot;tok-number&quot;&gt;2&lt;/span&gt;).gain(.&lt;span class=&quot;tok-number&quot;&gt;6&lt;/span&gt;)

stab: note(&lt;span class=&quot;tok-string&quot;&gt;&amp;quot;&amp;lt;[c3,eb3,g3] ~ ~ [bb2,d3,f3]&amp;gt;&amp;quot;&lt;/span&gt;).s(&lt;span class=&quot;tok-string&quot;&gt;&amp;quot;square&amp;quot;&lt;/span&gt;).hpf(&lt;span class=&quot;tok-number&quot;&gt;330&lt;/span&gt;)
  .room(.&lt;span class=&quot;tok-number&quot;&gt;45&lt;/span&gt;).delay(.&lt;span class=&quot;tok-number&quot;&gt;3&lt;/span&gt;).delaytime(.&lt;span class=&quot;tok-number&quot;&gt;375&lt;/span&gt;).gain(.&lt;span class=&quot;tok-number&quot;&gt;4&lt;/span&gt;)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You can read all of it in about five minutes. Three ideas carry most of the weight.&lt;/p&gt;
&lt;h2 id=&quot;the-three-ideas&quot;&gt;The three ideas&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;A cycle is a bar.&lt;/strong&gt; The pattern language underneath, &lt;a href=&quot;https://strudel.cc&quot; rel=&quot;noopener&quot;&gt;Strudel&lt;/a&gt;, counts time in cycles. &lt;code&gt;setcpm(130/4)&lt;/code&gt; sets 130 beats per minute with four beats to a cycle, so one cycle is one bar of 4/4. &lt;code&gt;form('loop:8')&lt;/code&gt; says the song is one section, eight bars long, that repeats.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A string is a bar of rhythm.&lt;/strong&gt; Whatever sits inside double quotes is spread evenly across one cycle. &lt;code&gt;&amp;quot;bd sd&amp;quot;&lt;/code&gt; is two hits, half a bar each. A few symbols bend that:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;code&gt;*&lt;/code&gt; repeats: &lt;code&gt;&amp;quot;bd*4&amp;quot;&lt;/code&gt; is four kicks in the bar.&lt;/li&gt;&lt;li&gt;&lt;code&gt;~&lt;/code&gt; is a rest.&lt;/li&gt;&lt;li&gt;&lt;code&gt;[ ]&lt;/code&gt; groups steps into the space of one.&lt;/li&gt;&lt;li&gt;&lt;code&gt;&amp;lt; &amp;gt;&lt;/code&gt; plays one item per bar, in turn.&lt;/li&gt;&lt;li&gt;&lt;code&gt;,&lt;/code&gt; inside a group stacks notes into a chord.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Each stem is one instrument, and the dots are a signal chain.&lt;/strong&gt; A stem starts with its name and a colon. Read it left to right the way you would follow a cable: what plays, then everything done to it. A chain can wrap onto the next line.&lt;/p&gt;
&lt;h2 id=&quot;the-kick&quot;&gt;The kick&lt;/h2&gt;
&lt;pre class=&quot;code&quot; data-lang=&quot;strudel&quot;&gt;&lt;code&gt;kick: s(&lt;span class=&quot;tok-string&quot;&gt;&amp;quot;bd*4&amp;quot;&lt;/span&gt;).bank(&lt;span class=&quot;tok-string&quot;&gt;&amp;quot;RolandTR909&amp;quot;&lt;/span&gt;).gain(.&lt;span class=&quot;tok-number&quot;&gt;9&lt;/span&gt;)
  .duckorbit(&lt;span class=&quot;tok-number&quot;&gt;2&lt;/span&gt;).duckdepth(.&lt;span class=&quot;tok-number&quot;&gt;7&lt;/span&gt;).duckattack(.&lt;span class=&quot;tok-number&quot;&gt;12&lt;/span&gt;)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;s(&amp;quot;bd*4&amp;quot;)&lt;/code&gt; plays a bass drum four times a bar. &lt;code&gt;.bank(&amp;quot;RolandTR909&amp;quot;)&lt;/code&gt; picks the 909’s kick. &lt;code&gt;.gain(.9)&lt;/code&gt; sets the level.&lt;/p&gt;
&lt;p&gt;The second line is the sidechain. &lt;code&gt;.duckorbit(2)&lt;/code&gt; says: every time this kick hits, turn down everything in group 2. &lt;code&gt;.duckdepth(.7)&lt;/code&gt; is how far down, and &lt;code&gt;.duckattack(.12)&lt;/code&gt; is how long the level takes to come back. Hold that thought until the bass.&lt;/p&gt;
&lt;h2 id=&quot;the-hats&quot;&gt;The hats&lt;/h2&gt;
&lt;pre class=&quot;code&quot; data-lang=&quot;strudel&quot;&gt;&lt;code&gt;hats: s(&lt;span class=&quot;tok-string&quot;&gt;&amp;quot;hh*16&amp;quot;&lt;/span&gt;).bank(&lt;span class=&quot;tok-string&quot;&gt;&amp;quot;RolandTR909&amp;quot;&lt;/span&gt;)
  .gain(&lt;span class=&quot;tok-string&quot;&gt;&amp;quot;[.34 .13 .2 .15]*4&amp;quot;&lt;/span&gt;).hpf(&lt;span class=&quot;tok-number&quot;&gt;420&lt;/span&gt;).degradeBy(.&lt;span class=&quot;tok-number&quot;&gt;15&lt;/span&gt;)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Sixteen closed hats per bar. The gain is a pattern too: four levels, repeated four times, so every beat goes loud, quiet, medium, quiet. That accent shape is most of what separates a groove from a grid.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;.hpf(420)&lt;/code&gt; is a highpass filter at 420 Hz, which keeps the hats out of the low end. &lt;code&gt;.degradeBy(.15)&lt;/code&gt; drops about 15 percent of the hits at random. The randomness is a function of time, so the same hits drop on every playback.&lt;/p&gt;
&lt;h2 id=&quot;the-clap&quot;&gt;The clap&lt;/h2&gt;
&lt;pre class=&quot;code&quot; data-lang=&quot;strudel&quot;&gt;&lt;code&gt;clap: s(&lt;span class=&quot;tok-string&quot;&gt;&amp;quot;~ cp ~ cp&amp;quot;&lt;/span&gt;).bank(&lt;span class=&quot;tok-string&quot;&gt;&amp;quot;RolandTR909&amp;quot;&lt;/span&gt;).late(.&lt;span class=&quot;tok-number&quot;&gt;008&lt;/span&gt;).room(.&lt;span class=&quot;tok-number&quot;&gt;3&lt;/span&gt;).gain(.&lt;span class=&quot;tok-number&quot;&gt;42&lt;/span&gt;)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Rest, clap, rest, clap: beats two and four. &lt;code&gt;.late(.008)&lt;/code&gt; pushes the clap back by eight thousandths of a cycle, which at this tempo is about 15 milliseconds. You would not notice it as late. You would notice the track feeling stiffer without it. &lt;code&gt;.room(.3)&lt;/code&gt; adds reverb.&lt;/p&gt;
&lt;h2 id=&quot;the-bass&quot;&gt;The bass&lt;/h2&gt;
&lt;pre class=&quot;code&quot; data-lang=&quot;strudel&quot;&gt;&lt;code&gt;bass: note(&lt;span class=&quot;tok-string&quot;&gt;&amp;quot;c1*16&amp;quot;&lt;/span&gt;).s(&lt;span class=&quot;tok-string&quot;&gt;&amp;quot;sawtooth&amp;quot;&lt;/span&gt;)
  .lpf(sine.range(&lt;span class=&quot;tok-number&quot;&gt;320&lt;/span&gt;, &lt;span class=&quot;tok-number&quot;&gt;1500&lt;/span&gt;).slow(&lt;span class=&quot;tok-number&quot;&gt;8&lt;/span&gt;)).lpq(&lt;span class=&quot;tok-number&quot;&gt;7&lt;/span&gt;)
  .decay(.&lt;span class=&quot;tok-number&quot;&gt;08&lt;/span&gt;).sustain(&lt;span class=&quot;tok-number&quot;&gt;0&lt;/span&gt;).orbit(&lt;span class=&quot;tok-number&quot;&gt;2&lt;/span&gt;).gain(.&lt;span class=&quot;tok-number&quot;&gt;6&lt;/span&gt;)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Sixteen C1s per bar on a sawtooth oscillator. &lt;code&gt;.decay(.08).sustain(0)&lt;/code&gt; makes each note a short pluck.&lt;/p&gt;
&lt;p&gt;The interesting part is the filter. &lt;code&gt;.lpf()&lt;/code&gt; usually takes a number. Here it takes &lt;code&gt;sine.range(320, 1500).slow(8)&lt;/code&gt;: a sine wave that travels between 320 and 1,500 Hz and takes eight bars to complete, exactly the length of the loop. The bass opens up and closes down once per pass while the notes never change. &lt;code&gt;.lpq(7)&lt;/code&gt; adds resonance so you can hear the filter move.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;.orbit(2)&lt;/code&gt; puts the bass in group 2, which is what the kick is ducking. Four times a bar the bass dips out of the kick’s way and swells back. That is the pump.&lt;/p&gt;
&lt;h2 id=&quot;the-stab&quot;&gt;The stab&lt;/h2&gt;
&lt;pre class=&quot;code&quot; data-lang=&quot;strudel&quot;&gt;&lt;code&gt;stab: note(&lt;span class=&quot;tok-string&quot;&gt;&amp;quot;&amp;lt;[c3,eb3,g3] ~ ~ [bb2,d3,f3]&amp;gt;&amp;quot;&lt;/span&gt;).s(&lt;span class=&quot;tok-string&quot;&gt;&amp;quot;square&amp;quot;&lt;/span&gt;).hpf(&lt;span class=&quot;tok-number&quot;&gt;330&lt;/span&gt;)
  .room(.&lt;span class=&quot;tok-number&quot;&gt;45&lt;/span&gt;).delay(.&lt;span class=&quot;tok-number&quot;&gt;3&lt;/span&gt;).delaytime(.&lt;span class=&quot;tok-number&quot;&gt;375&lt;/span&gt;).gain(.&lt;span class=&quot;tok-number&quot;&gt;4&lt;/span&gt;)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The angle brackets hold four items, so this pattern takes four bars. Bar one: C, E flat and G together, a C minor chord. Bars two and three: nothing. Bar four: a B flat major chord.&lt;/p&gt;
&lt;p&gt;It plays on a square wave, highpassed, with reverb and delay. Every stem has a reverb and a delay to itself, so this tail does not wash over the drums.&lt;/p&gt;
&lt;h2 id=&quot;four-edits-to-try&quot;&gt;Four edits to try&lt;/h2&gt;
&lt;p&gt;Generate a loop in songcode, paste this track over it in the editor, press play, and change one thing at a time.&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Break the kick.&lt;/strong&gt; Replace &lt;code&gt;&amp;quot;bd*4&amp;quot;&lt;/code&gt; with &lt;code&gt;&amp;quot;bd(3,8)&amp;quot;&lt;/code&gt;. That asks for three hits spread as evenly as possible over eight steps, and they land on steps one, four and seven.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Speed up the filter.&lt;/strong&gt; Change &lt;code&gt;.slow(8)&lt;/code&gt; to &lt;code&gt;.slow(4)&lt;/code&gt;. The sweep now completes every four bars.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Add a fill.&lt;/strong&gt; Append &lt;code&gt;.into('loop', 1, x =&amp;gt; x.ply(2))&lt;/code&gt; to the hats. In the last bar before the loop comes round, each hat plays twice.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Fill in the chords.&lt;/strong&gt; Change the stab to &lt;code&gt;&amp;quot;&amp;lt;[c3,eb3,g3] [bb2,d3,f3]&amp;gt;&amp;quot;&lt;/code&gt;. The two chords now alternate every bar.&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;Every one of these is a few characters. None of them needs a model.&lt;/p&gt;
&lt;h2 id=&quot;the-same-track-without-the-code&quot;&gt;The same track without the code&lt;/h2&gt;
&lt;p&gt;Above the editor is a switch: code, stems. The stems view shows this same text as a multitrack session. Each stem is a row with mute, solo and a level. Select one and its notes open in a piano roll or a drum grid, where you can draw and drag them.&lt;/p&gt;
&lt;p&gt;Nothing is converted. The notes you draw are written back into the text, which stays the single source of truth. Levels, mutes and solos are a mix on top of it.&lt;/p&gt;
&lt;h2 id=&quot;reading-what-the-model-wrote&quot;&gt;Reading what the model wrote&lt;/h2&gt;
&lt;p&gt;When songcode generates a track, this is the material you get back. A longer one has more stems and more variation, and a full track declares its sections up front and tells each stem where to play:&lt;/p&gt;
&lt;pre class=&quot;code&quot; data-lang=&quot;strudel&quot;&gt;&lt;code&gt;form(&lt;span class=&quot;tok-string&quot;&gt;'intro:16 build:8 main:32 break:16 rise:8 peak:32 outro:16'&lt;/span&gt;)

kick: s(&lt;span class=&quot;tok-string&quot;&gt;&amp;quot;bd*4&amp;quot;&lt;/span&gt;).bank(&lt;span class=&quot;tok-string&quot;&gt;&amp;quot;RolandTR909&amp;quot;&lt;/span&gt;).gain(.&lt;span class=&quot;tok-number&quot;&gt;9&lt;/span&gt;).except(&lt;span class=&quot;tok-string&quot;&gt;'break'&lt;/span&gt;)
lead: n(&lt;span class=&quot;tok-string&quot;&gt;&amp;quot;0 3 7 10 7 3 5 ~&amp;quot;&lt;/span&gt;).scale(&lt;span class=&quot;tok-string&quot;&gt;&amp;quot;c4:minor&amp;quot;&lt;/span&gt;).s(&lt;span class=&quot;tok-string&quot;&gt;&amp;quot;supersaw&amp;quot;&lt;/span&gt;).only(&lt;span class=&quot;tok-string&quot;&gt;'peak'&lt;/span&gt;)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The kick plays everywhere but the break. The lead is held back until the peak.&lt;/p&gt;
&lt;p&gt;Once you can read a track you can ask better questions of it. Why does the clap feel late? Find the stem, look for &lt;code&gt;.late&lt;/code&gt;. Why is the mix muddy? Look for a pad with no &lt;code&gt;.hpf&lt;/code&gt;. The answer is always somewhere on the screen.&lt;/p&gt;
&lt;p&gt;For the full pattern language, &lt;a href=&quot;https://strudel.cc/workshop/getting-started/&quot; rel=&quot;noopener&quot;&gt;Strudel’s own workshop&lt;/a&gt; is the place to go.&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>A track is a text file</title>
    <link href="https://songco.de/blog/a-track-is-a-text-file/" />
    <id>https://songco.de/blog/a-track-is-a-text-file/</id>
    <published>2026-11-11T00:00:00Z</published>
    <updated>2026-11-11T00:00:00Z</updated>
    <summary>A four minute track in two kilobytes, and what follows from that.</summary>
    <content type="html">&lt;p&gt;The reference track we wrote for songcode’s model prompt is called cold storage. It runs 128 bars at 132 bpm, which is 3 minutes 53 seconds. It has an intro, a build, a main section, a breakdown, a rise, a peak and an outro.&lt;/p&gt;
&lt;p&gt;Its source is 1,872 bytes.&lt;/p&gt;
&lt;p&gt;The same track as a 192 kbps MP3 is about 5.6 megabytes. As a 16-bit WAV it is about 41. The text is roughly 3,000 times smaller than the MP3, and it is the more complete version of the two, because the MP3 only tells you what the track sounds like. The text tells you how it is made.&lt;/p&gt;
&lt;p&gt;A few things follow from a track being text.&lt;/p&gt;
&lt;h2 id=&quot;you-can-read-it&quot;&gt;You can read it&lt;/h2&gt;
&lt;p&gt;Nothing is hidden in a text file. Tempo is a number on line two. The arrangement is line three: section names and their lengths in bars. The bass is one named stem, and the filter that makes it move is a few characters inside it. If you want to know why the breakdown works, look for the stems that say &lt;code&gt;.except('break')&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://songco.de/blog/how-to-read-a-track/&quot;&gt;How to read a track&lt;/a&gt; goes through one from top to bottom.&lt;/p&gt;
&lt;h2 id=&quot;you-can-change-it&quot;&gt;You can change it&lt;/h2&gt;
&lt;p&gt;With a rendered audio file, a change means a new render. On most AI music services that is another generation, another draw from the model, and often a different track than the one you were trying to fix.&lt;/p&gt;
&lt;p&gt;With source, a change is a keystroke. Lower the tempo by six. Pull the hats down. Swap the 909 for an 808. The rest of the track stays exactly as it was, because you did not ask anything to guess.&lt;/p&gt;
&lt;h2 id=&quot;you-can-compare-versions&quot;&gt;You can compare versions&lt;/h2&gt;
&lt;p&gt;Text diffs. Two versions of a track differ by the lines you changed, and any diff tool will show you which. You can keep a track in a git repository and scroll back through how it got to where it is. Try that with &lt;code&gt;final_v3_REAL.wav&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&quot;you-can-send-it-anywhere-text-goes&quot;&gt;You can send it anywhere text goes&lt;/h2&gt;
&lt;p&gt;A songcode track fits in a chat message. It fits in an email, a gist, a comment thread, a sticky note if your handwriting is small. A saved track gets a link, and whoever opens the link gets the source along with the sound. It is not locked to us either: “open in strudel” hands the same track to the editor at &lt;a href=&quot;https://strudel.cc&quot; rel=&quot;noopener&quot;&gt;strudel.cc&lt;/a&gt;, where it plays without songcode.&lt;/p&gt;
&lt;p&gt;That changes what sharing means. Sending someone a recording says “listen to this.” Sending them source says “here, take it apart.”&lt;/p&gt;
&lt;h2 id=&quot;it-plays-the-same-every-time&quot;&gt;It plays the same every time&lt;/h2&gt;
&lt;p&gt;The same code produces the same notes on every machine. That includes the parts that sound random. When a hi-hat pattern drops 15 percent of its hits, the choice of which hits is a function of time, so it drops the same ones on every playback.&lt;/p&gt;
&lt;p&gt;A track is a description of music, and descriptions do not degrade. There is no generation loss, and no bitrate until the moment you export.&lt;/p&gt;
&lt;h2 id=&quot;it-is-small-enough-to-be-free-to-keep&quot;&gt;It is small enough to be free to keep&lt;/h2&gt;
&lt;p&gt;Two kilobytes costs nothing to store. A thousand tracks fit in the space of one phone photo. Nobody has to decide which drafts are worth keeping.&lt;/p&gt;
&lt;h2 id=&quot;what-you-give-up&quot;&gt;What you give up&lt;/h2&gt;
&lt;p&gt;A text file makes no sound until something plays it. songcode plays it in your browser, and renders a WAV or MP3 there, faster than real time, when you need a file for somewhere else.&lt;/p&gt;
&lt;p&gt;The bigger cost is range. Text can only describe what the engine knows how to play: synths, drum machines, sampled instruments, effects. A recording can hold anything that ever made a sound, including a human voice. Source cannot, and &lt;a href=&quot;https://songco.de/blog/what-songcode-cant-do/&quot;&gt;we are plain about that&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For electronic music the trade is a good one. The genre was built on machines that are, underneath, a list of steps and a handful of settings. Text holds that without losing anything.&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>The AI music map, November 2026</title>
    <link href="https://songco.de/blog/ai-music-map-2026/" />
    <id>https://songco.de/blog/ai-music-map-2026/</id>
    <published>2026-11-11T00:00:00Z</published>
    <updated>2026-11-11T00:00:00Z</updated>
    <summary>Six services, three ways of making music with a model, and what each company says about its training data.</summary>
    <content type="html">&lt;p&gt;“AI music” covers tools that have very little in common under the surface. They differ in what the model produces, what it learned from, and what you are allowed to carry out the door.&lt;/p&gt;
&lt;p&gt;This is the field as of 11 November 2026, with sources linked at the bottom. Where a company has described its training data, we quote it.&lt;/p&gt;
&lt;h2 id=&quot;three-ways-to-do-it&quot;&gt;Three ways to do it&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Audio models trained on recordings at large.&lt;/strong&gt; The model outputs sound, and it learned sound from a very large body of recorded music. Suno and Udio began here. Both were sued by the major labels in June 2024, both acknowledged in court filings that their models were trained on copyrighted recordings and argued fair use, and both have spent the time since moving toward licences.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Audio models trained on licensed or open catalogues.&lt;/strong&gt; Same kind of model, narrower and documented diet. Stable Audio, Eleven Music and Google’s Lyria describe themselves this way, with different levels of detail.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Code.&lt;/strong&gt; A language model writes a program, and a synthesis engine plays it. No audio model is involved. This is where songcode sits.&lt;/p&gt;
&lt;h2 id=&quot;side-by-side&quot;&gt;Side by side&lt;/h2&gt;
&lt;div class=&quot;table-wrap&quot;&gt;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th scope=&quot;col&quot;&gt;&lt;/th&gt;&lt;th scope=&quot;col&quot;&gt;what you get&lt;/th&gt;&lt;th scope=&quot;col&quot;&gt;vocals&lt;/th&gt;&lt;th scope=&quot;col&quot;&gt;what they say about training data&lt;/th&gt;&lt;th scope=&quot;col&quot;&gt;taking it with you&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;svg class=&quot;logo&quot; viewBox=&quot;6 4 52 56&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot;&gt;&lt;rect x=&quot;21&quot; y=&quot;10.25&quot; width=&quot;15&quot; height=&quot;5.5&quot; rx=&quot;2.75&quot;/&gt;&lt;rect x=&quot;39&quot; y=&quot;10.25&quot; width=&quot;10&quot; height=&quot;5.5&quot; rx=&quot;2.75&quot; opacity=&quot;0.45&quot;/&gt;&lt;rect x=&quot;15&quot; y=&quot;19.75&quot; width=&quot;13&quot; height=&quot;5.5&quot; rx=&quot;2.75&quot;/&gt;&lt;rect x=&quot;15&quot; y=&quot;29.25&quot; width=&quot;9&quot; height=&quot;5.5&quot; rx=&quot;2.75&quot; opacity=&quot;0.45&quot;/&gt;&lt;rect x=&quot;27&quot; y=&quot;29.25&quot; width=&quot;22&quot; height=&quot;5.5&quot; rx=&quot;2.75&quot;/&gt;&lt;rect x=&quot;36&quot; y=&quot;38.75&quot; width=&quot;13&quot; height=&quot;5.5&quot; rx=&quot;2.75&quot;/&gt;&lt;rect x=&quot;15&quot; y=&quot;48.25&quot; width=&quot;11&quot; height=&quot;5.5&quot; rx=&quot;2.75&quot; opacity=&quot;0.45&quot;/&gt;&lt;rect x=&quot;29&quot; y=&quot;48.25&quot; width=&quot;14&quot; height=&quot;5.5&quot; rx=&quot;2.75&quot;/&gt;&lt;/svg&gt; songcode&lt;/th&gt;&lt;td&gt;source code, played in your browser&lt;/td&gt;&lt;td&gt;no&lt;/td&gt;&lt;td&gt;no audio model; a general-purpose language model writes the code&lt;/td&gt;&lt;td&gt;source file, WAV, MP3&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;svg class=&quot;logo&quot; viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M16.5 0C20.642 0 24 5.373 24 12h-9c0 6.627-3.358 12-7.5 12C3.358 24 0 18.627 0 12h9c0-6.627 3.358-12 7.5-12Z&quot;/&gt;&lt;/svg&gt; Suno v6&lt;/th&gt;&lt;td&gt;finished songs&lt;/td&gt;&lt;td&gt;yes&lt;/td&gt;&lt;td&gt;“developed with our industry partners, including Warner Music Group, BMG and Believe”&lt;/td&gt;&lt;td&gt;20 or 60 downloads a month on paid plans, none on free&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;svg class=&quot;logo&quot; viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M15.763 1.02c.212-.021.44.002.654.004l1.21.001c1.68.001 3.373.043 5.052-.025l-.001 8.93v2.652c0 .744.013 1.486-.065 2.227a9.643 9.643 0 01-.585 2.453 8.895 8.895 0 01-3.215 4.14c-.289.201-.602.422-.925.564a10.01 10.01 0 01-2.582.976c-.361.083-.728.131-1.088.216-.381-.311-.725-.694-1.072-1.043l-1.893-1.893c-.722-.716-1.455-1.417-2.171-2.14-.303-.304-.639-.604-.907-.938.106.694.047 1.75.047 2.486.007 1.457.003 2.913-.013 4.37a.906.906 0 01-.046-.035c-.236-.185-.447-.428-.66-.642-.41-.415-.823-.827-1.239-1.237l-2.991-2.979c-.54-.54-1.098-1.07-1.624-1.623-.07-.074-.215-.21-.228-.311a.348.348 0 01.129.001l-.005-.012c.869-.05 1.76-.013 2.63-.013 1.332 0 2.665-.018 3.996.001a597.835 597.835 0 01-6.839-6.807c-.047-.357-.02-.74-.02-1.101l.001-1.915L1.3 1.178c0-.04.01-.075.028-.112.059-.04.104-.038.175-.042.52-.03 1.06 0 1.582.001 1.512 0 3.036.042 4.546-.006.197-.014.397-.011.594-.015l-.003 10.581c.009 1.859.003 3.717-.018 5.575.426-.044.89-.01 1.32-.01h2.772c.964-.007 1.857-.19 2.558-.904.538-.548.764-1.256.88-2 .08-.51.042-1.08.041-1.597l-.002-2.645c-.001-2.994.026-5.99-.01-8.984z&quot;/&gt;&lt;/svg&gt; Udio&lt;/th&gt;&lt;td&gt;finished songs&lt;/td&gt;&lt;td&gt;yes&lt;/td&gt;&lt;td&gt;sued in 2024, since settled with Universal and Warner; a licensed platform is planned&lt;/td&gt;&lt;td&gt;downloads off since October 2025&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;svg class=&quot;logo&quot; viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M7.223 21c4.252 0 7.018-2.22 7.018-5.56 0-2.59-1.682-4.236-4.69-4.918l-1.93-.571c-1.694-.375-2.683-.825-2.45-1.975.194-.957.773-1.497 2.122-1.497 4.285 0 5.873 1.497 5.873 1.497v-3.6S11.62 3 7.293 3C3.213 3 1 5.07 1 8.273c0 2.59 1.534 4.097 4.645 4.812l.334.083c.473.144 1.112.335 1.916.572 1.59.375 1.999.773 1.999 1.966 0 1.09-1.15 1.71-2.67 1.71C2.841 17.416 1 15.231 1 15.231v3.989S2.152 21 7.223 21z M20.374 20.73c1.505 0 2.626-1.073 2.626-2.526 0-1.484-1.089-2.526-2.626-2.526-1.505 0-2.594 1.042-2.594 2.526 0 1.484 1.089 2.526 2.594 2.526z&quot;/&gt;&lt;/svg&gt; Stable Audio 3.0&lt;/th&gt;&lt;td&gt;instrumentals and sound effects, up to 6:20&lt;/td&gt;&lt;td&gt;no&lt;/td&gt;&lt;td&gt;“trained on licensed and Creative Commons material”&lt;/td&gt;&lt;td&gt;no download cap; open weights for three of four models&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;svg class=&quot;logo&quot; viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M4.6035 0v24h4.9317V0zm9.8613 0v24h4.9317V0z&quot;/&gt;&lt;/svg&gt; Eleven Music&lt;/th&gt;&lt;td&gt;songs and instrumentals&lt;/td&gt;&lt;td&gt;yes&lt;/td&gt;&lt;td&gt;“Built in partnership with artists, labels, and publishers”&lt;/td&gt;&lt;td&gt;paid plans; commercial terms vary by tier&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;&lt;svg class=&quot;logo&quot; viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z&quot;/&gt;&lt;/svg&gt; Lyria 3 in Gemini&lt;/th&gt;&lt;td&gt;30 second tracks, longer on Lyria 3 Pro&lt;/td&gt;&lt;td&gt;yes&lt;/td&gt;&lt;td&gt;Google says it has “been very mindful of copyright and partner agreements”&lt;/td&gt;&lt;td&gt;every track carries a SynthID watermark&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h2 id=&quot;suno&quot;&gt;&lt;svg class=&quot;logo&quot; viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M16.5 0C20.642 0 24 5.373 24 12h-9c0 6.627-3.358 12-7.5 12C3.358 24 0 18.627 0 12h9c0-6.627 3.358-12 7.5-12Z&quot;/&gt;&lt;/svg&gt; Suno&lt;/h2&gt;
&lt;p&gt;The best known of the group. You type a prompt, you get a finished song with a singer. In September 2026 Suno launched v6 and retired every earlier model. Paid plans start at $8 a month and cap downloads at 20 or 60 songs a month.&lt;/p&gt;
&lt;p&gt;On training, there are two eras. In an August 2024 court filing, Suno said its training data “includes essentially all music files of reasonable quality that are accessible on the open Internet” and argued that was fair use. Warner settled with Suno in November 2025. Universal and Sony have not, and their case continues. &lt;a href=&quot;https://songco.de/blog/songcode-and-suno/&quot;&gt;More in songcode and Suno&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;udio&quot;&gt;&lt;svg class=&quot;logo&quot; viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M15.763 1.02c.212-.021.44.002.654.004l1.21.001c1.68.001 3.373.043 5.052-.025l-.001 8.93v2.652c0 .744.013 1.486-.065 2.227a9.643 9.643 0 01-.585 2.453 8.895 8.895 0 01-3.215 4.14c-.289.201-.602.422-.925.564a10.01 10.01 0 01-2.582.976c-.361.083-.728.131-1.088.216-.381-.311-.725-.694-1.072-1.043l-1.893-1.893c-.722-.716-1.455-1.417-2.171-2.14-.303-.304-.639-.604-.907-.938.106.694.047 1.75.047 2.486.007 1.457.003 2.913-.013 4.37a.906.906 0 01-.046-.035c-.236-.185-.447-.428-.66-.642-.41-.415-.823-.827-1.239-1.237l-2.991-2.979c-.54-.54-1.098-1.07-1.624-1.623-.07-.074-.215-.21-.228-.311a.348.348 0 01.129.001l-.005-.012c.869-.05 1.76-.013 2.63-.013 1.332 0 2.665-.018 3.996.001a597.835 597.835 0 01-6.839-6.807c-.047-.357-.02-.74-.02-1.101l.001-1.915L1.3 1.178c0-.04.01-.075.028-.112.059-.04.104-.038.175-.042.52-.03 1.06 0 1.582.001 1.512 0 3.036.042 4.546-.006.197-.014.397-.011.594-.015l-.003 10.581c.009 1.859.003 3.717-.018 5.575.426-.044.89-.01 1.32-.01h2.772c.964-.007 1.857-.19 2.558-.904.538-.548.764-1.256.88-2 .08-.51.042-1.08.041-1.597l-.002-2.645c-.001-2.994.026-5.99-.01-8.984z&quot;/&gt;&lt;/svg&gt; Udio&lt;/h2&gt;
&lt;p&gt;Udio settled with Universal in October 2025 and with Warner a few weeks later. On the day of the Universal announcement it switched off downloads, and reviews from October 2026 report they are still off while the company builds a licensed platform. &lt;a href=&quot;https://songco.de/blog/songcode-and-udio/&quot;&gt;More in songcode and Udio&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;stable-audio&quot;&gt;&lt;svg class=&quot;logo&quot; viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M7.223 21c4.252 0 7.018-2.22 7.018-5.56 0-2.59-1.682-4.236-4.69-4.918l-1.93-.571c-1.694-.375-2.683-.825-2.45-1.975.194-.957.773-1.497 2.122-1.497 4.285 0 5.873 1.497 5.873 1.497v-3.6S11.62 3 7.293 3C3.213 3 1 5.07 1 8.273c0 2.59 1.534 4.097 4.645 4.812l.334.083c.473.144 1.112.335 1.916.572 1.59.375 1.999.773 1.999 1.966 0 1.09-1.15 1.71-2.67 1.71C2.841 17.416 1 15.231 1 15.231v3.989S2.152 21 7.223 21z M20.374 20.73c1.505 0 2.626-1.073 2.626-2.526 0-1.484-1.089-2.526-2.626-2.526-1.505 0-2.594 1.042-2.594 2.526 0 1.484 1.089 2.526 2.594 2.526z&quot;/&gt;&lt;/svg&gt; Stable Audio&lt;/h2&gt;
&lt;p&gt;Stability AI is the most specific about its data. It publishes the breakdown for Stable Audio 3.0: 806,284 licensed files from the AudioSparx library and 472,618 Creative Commons recordings from Freesound. Three of the four models ship as open weights that you can run on your own machine. The models do not generate vocals. A hosted version starts at $12 a month.&lt;/p&gt;
&lt;p&gt;If you want an audio model and care where its training data came from, this is the one with the most paperwork.&lt;/p&gt;
&lt;h2 id=&quot;eleven-music&quot;&gt;&lt;svg class=&quot;logo&quot; viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M4.6035 0v24h4.9317V0zm9.8613 0v24h4.9317V0z&quot;/&gt;&lt;/svg&gt; Eleven Music&lt;/h2&gt;
&lt;p&gt;ElevenLabs launched its music model in August 2025 with licensing deals in place with Merlin and Kobalt. It generates songs with vocals as well as instrumentals. Plans run from free to $99 a month, and the commercial rights you get depend on the tier.&lt;/p&gt;
&lt;h2 id=&quot;lyria&quot;&gt;&lt;svg class=&quot;logo&quot; viewBox=&quot;0 0 24 24&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot;&gt;&lt;path d=&quot;M12.48 10.92v3.28h7.84c-.24 1.84-.853 3.187-1.787 4.133-1.147 1.147-2.933 2.4-6.053 2.4-4.827 0-8.6-3.893-8.6-8.72s3.773-8.72 8.6-8.72c2.6 0 4.507 1.027 5.907 2.347l2.307-2.307C18.747 1.44 16.133 0 12.48 0 5.867 0 .307 5.387.307 12s5.56 12 12.173 12c3.573 0 6.267-1.173 8.373-3.36 2.16-2.16 2.84-5.213 2.84-7.667 0-.76-.053-1.467-.173-2.053H12.48z&quot;/&gt;&lt;/svg&gt; Lyria&lt;/h2&gt;
&lt;p&gt;Google’s Lyria 3 arrived in the Gemini app in February 2026, generating 30 second tracks. Lyria 3 Pro followed in March with tracks of around three minutes. Google’s launch post says it has been “very mindful of copyright and partner agreements” in training the model, and reporting on the Pro launch says the data came from partners and from YouTube and Google material it is permitted to use. It has not published a breakdown. Every output carries an imperceptible SynthID watermark.&lt;/p&gt;
&lt;h2 id=&quot;where-songcode-sits&quot;&gt;&lt;svg class=&quot;logo&quot; viewBox=&quot;6 4 52 56&quot; width=&quot;18&quot; height=&quot;18&quot; aria-hidden=&quot;true&quot;&gt;&lt;rect x=&quot;21&quot; y=&quot;10.25&quot; width=&quot;15&quot; height=&quot;5.5&quot; rx=&quot;2.75&quot;/&gt;&lt;rect x=&quot;39&quot; y=&quot;10.25&quot; width=&quot;10&quot; height=&quot;5.5&quot; rx=&quot;2.75&quot; opacity=&quot;0.45&quot;/&gt;&lt;rect x=&quot;15&quot; y=&quot;19.75&quot; width=&quot;13&quot; height=&quot;5.5&quot; rx=&quot;2.75&quot;/&gt;&lt;rect x=&quot;15&quot; y=&quot;29.25&quot; width=&quot;9&quot; height=&quot;5.5&quot; rx=&quot;2.75&quot; opacity=&quot;0.45&quot;/&gt;&lt;rect x=&quot;27&quot; y=&quot;29.25&quot; width=&quot;22&quot; height=&quot;5.5&quot; rx=&quot;2.75&quot;/&gt;&lt;rect x=&quot;36&quot; y=&quot;38.75&quot; width=&quot;13&quot; height=&quot;5.5&quot; rx=&quot;2.75&quot;/&gt;&lt;rect x=&quot;15&quot; y=&quot;48.25&quot; width=&quot;11&quot; height=&quot;5.5&quot; rx=&quot;2.75&quot; opacity=&quot;0.45&quot;/&gt;&lt;rect x=&quot;29&quot; y=&quot;48.25&quot; width=&quot;14&quot; height=&quot;5.5&quot; rx=&quot;2.75&quot;/&gt;&lt;/svg&gt; Where songcode sits&lt;/h2&gt;
&lt;p&gt;songcode is the odd one out. It has no audio model at all. A general-purpose language model writes a short program in a music pattern language, and your browser plays that program with synths and drum machine samples.&lt;/p&gt;
&lt;p&gt;That makes it narrower than everything else on this page. Everything it plays is a synth, a drum machine or a sampled instrument. It does not sing. It will not hand you a finished pop song.&lt;/p&gt;
&lt;p&gt;It also makes it the only one where the output is something you can read. &lt;a href=&quot;https://songco.de/blog/we-trained-nothing/&quot;&gt;We trained nothing&lt;/a&gt; covers what that means for the training question, including the parts of it that are not ours to answer.&lt;/p&gt;
&lt;p&gt;You can get a rough version of this by hand: ask a chatbot for Strudel code and paste it into &lt;a href=&quot;https://strudel.cc&quot; rel=&quot;noopener&quot;&gt;strudel.cc&lt;/a&gt;. songcode is that loop with the setup done properly. The model works from a written reference, a brief for each genre and a set of mixing rules. Each track is tested in your browser before it plays. The result lands in a player with a stems view, a library and export.&lt;/p&gt;
&lt;h2 id=&quot;how-to-choose&quot;&gt;How to choose&lt;/h2&gt;
&lt;p&gt;If you want a finished song with a voice today, use Suno, or Eleven Music if licensing deals behind the model matter to you. If you want instrumental audio from a model with documented training data, possibly running on your own hardware, use Stable Audio.&lt;/p&gt;
&lt;p&gt;If you want an electronic track you can open, read and rework line by line, that is what we built songcode for.&lt;/p&gt;
&lt;h2 id=&quot;sources&quot;&gt;Sources&lt;/h2&gt;
&lt;p&gt;Checked 11 November 2026.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Suno: &lt;a href=&quot;https://suno.com/pricing&quot; rel=&quot;noopener&quot;&gt;pricing&lt;/a&gt;, &lt;a href=&quot;https://suno.com/blog/introducing-v6&quot; rel=&quot;noopener&quot;&gt;Introducing v6&lt;/a&gt;, &lt;a href=&quot;https://help.suno.com/en/articles/13924481&quot; rel=&quot;noopener&quot;&gt;v6 FAQ&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Suno’s 2024 filing: &lt;a href=&quot;https://musicbusinessworldwide.com/as-suno-and-udio-admit-training-ai-with-unlicensed-music-record-industry-says-theres-nothing-fair-about-stealing-an-artists-lifes-work&quot; rel=&quot;noopener&quot;&gt;Music Business Worldwide&lt;/a&gt;, &lt;a href=&quot;https://404media.co/ai-music-generator-suno-admits-it-was-trained-on-essentially-all-music-files-on-the-internet&quot; rel=&quot;noopener&quot;&gt;404 Media&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Suno litigation status: &lt;a href=&quot;https://www.engadget.com/2310316/suno-ai-music-generator-sued-again-for-copyright-infringement/&quot; rel=&quot;noopener&quot;&gt;Engadget, 8 November 2026&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Udio: &lt;a href=&quot;https://www.udio.com/blog/a-new-era&quot; rel=&quot;noopener&quot;&gt;A New Era of Music&lt;/a&gt;, &lt;a href=&quot;https://www.udio.com/blog&quot; rel=&quot;noopener&quot;&gt;Udio blog&lt;/a&gt;, &lt;a href=&quot;https://music.loop.fans/ai/what-happened-to-udio&quot; rel=&quot;noopener&quot;&gt;Loop Fans, October 2026&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Stable Audio: &lt;a href=&quot;https://stability.ai/explainers/stable-audio-vs-competitors-licensing-export-rights-and-self-hosting-compared&quot; rel=&quot;noopener&quot;&gt;Stability AI’s licensing explainer&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Eleven Music: &lt;a href=&quot;https://elevenlabs.io/music&quot; rel=&quot;noopener&quot;&gt;product page&lt;/a&gt;, &lt;a href=&quot;https://musicbusinessworldwide.com/eleven-music-new-ai-rival-to-suno-launches-with-merlin-kobalt-licensing-deals-in-the-bag&quot; rel=&quot;noopener&quot;&gt;Music Business Worldwide on the launch&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Lyria: &lt;a href=&quot;https://blog.google/intl/en-ie/products/lyria-3/&quot; rel=&quot;noopener&quot;&gt;Google’s launch post&lt;/a&gt;, &lt;a href=&quot;https://dataconomy.com/2026/03/26/google-launches-lyria-3-pro-with-longer-generation-limits/&quot; rel=&quot;noopener&quot;&gt;Dataconomy on Lyria 3 Pro&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;</content>
  </entry>
  <entry>
    <title>songcode and Suno</title>
    <link href="https://songco.de/blog/songcode-and-suno/" />
    <id>https://songco.de/blog/songcode-and-suno/</id>
    <published>2026-11-11T00:00:00Z</published>
    <updated>2026-11-11T00:00:00Z</updated>
    <summary>One makes finished songs. The other makes source. A fair comparison, with prices and court dates checked.</summary>
    <content type="html">&lt;p&gt;Suno is the product most people mean when they say AI music. It deserves a straight comparison, and the straight version starts with this: for a lot of what people want from AI music, Suno is the better tool.&lt;/p&gt;
&lt;h2 id=&quot;what-suno-does&quot;&gt;What Suno does&lt;/h2&gt;
&lt;p&gt;You describe a song and Suno returns a finished recording: instruments, arrangement, lyrics, a singer. It covers most popular genres.&lt;/p&gt;
&lt;p&gt;In September 2026 Suno released v6 in three variants (v6, v6-wild and v6-mini) and retired every model that came before it. The new version takes text, audio, images or video as input and lets you edit a single section or a single lyric with a plain-language instruction. Paid subscribers on the top plan also get Suno Studio, an editor with MIDI, effects and automation.&lt;/p&gt;
&lt;p&gt;songcode does none of that. It writes instrumental music, most of it electronic, as a short program that your browser plays.&lt;/p&gt;
&lt;h2 id=&quot;side-by-side&quot;&gt;Side by side&lt;/h2&gt;
&lt;div class=&quot;table-wrap&quot;&gt;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th scope=&quot;col&quot;&gt;&lt;/th&gt;&lt;th scope=&quot;col&quot;&gt;songcode&lt;/th&gt;&lt;th scope=&quot;col&quot;&gt;Suno&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;what you get&lt;/th&gt;&lt;td&gt;source code, played live&lt;/td&gt;&lt;td&gt;a finished recording&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;vocals and lyrics&lt;/th&gt;&lt;td&gt;no&lt;/td&gt;&lt;td&gt;yes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;genres&lt;/th&gt;&lt;td&gt;51, all played by synths, drum machines and sampled instruments&lt;/td&gt;&lt;td&gt;broad&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;changing a result&lt;/th&gt;&lt;td&gt;edit a line, or regenerate one stem; the rest stays put&lt;/td&gt;&lt;td&gt;prompt again, or use the section editor&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;the model&lt;/th&gt;&lt;td&gt;a general-purpose language model writing code&lt;/td&gt;&lt;td&gt;an audio model&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;price&lt;/th&gt;&lt;td&gt;your own Anthropic or OpenAI API usage&lt;/td&gt;&lt;td&gt;free tier; paid from $8 a month&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;downloads&lt;/th&gt;&lt;td&gt;source, WAV, MP3, no cap&lt;/td&gt;&lt;td&gt;none on free; 20 or 60 songs a month on paid&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;h2 id=&quot;where-suno-wins&quot;&gt;Where Suno wins&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Voices.&lt;/strong&gt; A sung hook is the thing most people remember about a song, and songcode has no way to produce one.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Range.&lt;/strong&gt; Suno will attempt nearly any style. songcode stays inside what synthesizers and drum machines do well.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Finish.&lt;/strong&gt; A Suno track comes out sounding like a produced record. A songcode track sounds like a good hardware jam: clean, punchy, plainly electronic.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Effort.&lt;/strong&gt; One prompt, one song. There is nothing to learn.&lt;/p&gt;
&lt;p&gt;If the goal is a complete song for a video, a birthday or a demo with a topline, use Suno.&lt;/p&gt;
&lt;h2 id=&quot;where-the-two-part-ways&quot;&gt;Where the two part ways&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;What you hold at the end.&lt;/strong&gt; Suno gives you a recording and, on the paid plans, a monthly allowance of downloads. songcode gives you the program that makes the sound. You can read it, and you can keep it in a text file forever.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How you fix things.&lt;/strong&gt; With a recording, the fix for a busy hi-hat is another generation or an edit request. With source, the fix is finding the stem called &lt;code&gt;hats&lt;/code&gt; and changing a number, or pulling its fader down in the stems view. Nothing else in the track moves.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What you pay for.&lt;/strong&gt; Suno sells credits: ten per generation, each generation producing two songs, with 2,500 credits a month on the $8 plan. songcode has no credits. You bring an API key from Anthropic or OpenAI and pay that provider for the text the model writes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What the model learned from.&lt;/strong&gt; This one needs its own section.&lt;/p&gt;
&lt;h2 id=&quot;the-training-question&quot;&gt;The training question&lt;/h2&gt;
&lt;p&gt;Suno’s history here is public record, so we will stick to what Suno and the courts have said.&lt;/p&gt;
&lt;p&gt;The three major labels sued Suno in June 2024. In its response that August, Suno said its training data “includes essentially all music files of reasonable quality that are accessible on the open Internet” and argued that training on it was fair use.&lt;/p&gt;
&lt;p&gt;Warner settled in November 2025 and became a partner. Suno describes v6 as “developed with our industry partners, including Warner Music Group, BMG and Believe.” Its announcement does not describe the training data in more detail than that.&lt;/p&gt;
&lt;p&gt;Universal and Sony have not settled. Their case continues, and according to Engadget they contend that the v6 models still infringe. In July 2026 a Munich court ruled for the German collecting society GEMA in a case over six songs; that judgment was not final when it was issued. In November 2026 the publisher of Eminem’s catalogue and rights holders for Elvis Presley’s music filed new suits. Suno told Variety it prohibits the use of specific artists’ names and songs and screens for misuse.&lt;/p&gt;
&lt;p&gt;Those are allegations and one first-instance ruling. None of it is a final finding against Suno, and the fair use question at the centre of the US cases has not been decided.&lt;/p&gt;
&lt;p&gt;songcode’s position is different in kind. There is no audio model, so there is no audio training set to argue over. A language model writes code and your browser synthesizes it. That claim has edges of its own, and &lt;a href=&quot;https://songco.de/blog/we-trained-nothing/&quot;&gt;we spell them out&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&quot;which-one&quot;&gt;Which one&lt;/h2&gt;
&lt;p&gt;These are different instruments, and plenty of people will want both.&lt;/p&gt;
&lt;p&gt;Use Suno when you want a song. Use songcode when you want a track you can get inside: change the swing, rewrite the bassline, learn why the breakdown lands, and keep the source when you are done.&lt;/p&gt;
&lt;h2 id=&quot;sources&quot;&gt;Sources&lt;/h2&gt;
&lt;p&gt;Checked 11 November 2026.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://suno.com/pricing&quot; rel=&quot;noopener&quot;&gt;Suno pricing&lt;/a&gt;, &lt;a href=&quot;https://suno.com/blog/introducing-v6&quot; rel=&quot;noopener&quot;&gt;Introducing v6&lt;/a&gt;, &lt;a href=&quot;https://help.suno.com/en/articles/13924481&quot; rel=&quot;noopener&quot;&gt;v6 FAQ&lt;/a&gt;, &lt;a href=&quot;https://help.suno.com/en/categories/550145&quot; rel=&quot;noopener&quot;&gt;rights and ownership&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;The 2024 filing: &lt;a href=&quot;https://musicbusinessworldwide.com/as-suno-and-udio-admit-training-ai-with-unlicensed-music-record-industry-says-theres-nothing-fair-about-stealing-an-artists-lifes-work&quot; rel=&quot;noopener&quot;&gt;Music Business Worldwide&lt;/a&gt;, &lt;a href=&quot;https://404media.co/ai-music-generator-suno-admits-it-was-trained-on-essentially-all-music-files-on-the-internet&quot; rel=&quot;noopener&quot;&gt;404 Media&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Warner settlement and v6 partners: &lt;a href=&quot;https://suno.com/blog/introducing-v6&quot; rel=&quot;noopener&quot;&gt;Suno’s v6 announcement&lt;/a&gt;, &lt;a href=&quot;https://en.wikipedia.org/wiki/Suno_%28platform%29&quot; rel=&quot;noopener&quot;&gt;Wikipedia’s Suno timeline&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Universal and Sony, and the November 2026 suits: &lt;a href=&quot;https://www.engadget.com/2310316/suno-ai-music-generator-sued-again-for-copyright-infringement/&quot; rel=&quot;noopener&quot;&gt;Engadget, 8 November 2026&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;GEMA v. Suno: &lt;a href=&quot;https://www.reedsmith.com/our-insights/blogs/viewpoints/102nfis/gema-notches-a-second-transatlantic-ai-copyright-win-in-germany/&quot; rel=&quot;noopener&quot;&gt;Reed Smith, 31 July 2026&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;</content>
  </entry>
  <entry>
    <title>songcode and Udio</title>
    <link href="https://songco.de/blog/songcode-and-udio/" />
    <id>https://songco.de/blog/songcode-and-udio/</id>
    <published>2026-11-11T00:00:00Z</published>
    <updated>2026-11-11T00:00:00Z</updated>
    <summary>Udio switched off downloads in a day. What that says about where your music lives.</summary>
    <content type="html">&lt;p&gt;Udio launched in April 2024, founded by former Google DeepMind researchers, and became one of the two names in AI song generation alongside Suno. Like Suno, it turns a prompt into a finished recording with vocals.&lt;/p&gt;
&lt;p&gt;Its last year is the more instructive story.&lt;/p&gt;
&lt;h2 id=&quot;what-happened&quot;&gt;What happened&lt;/h2&gt;
&lt;p&gt;The major labels sued Udio in June 2024, in the same wave of lawsuits that named Suno.&lt;/p&gt;
&lt;p&gt;On 29 October 2025, Udio and Universal Music Group announced a settlement and a partnership to build a new licensed platform. Udio’s own post that day included this sentence: “Starting today, downloads from the platform will be unavailable.”&lt;/p&gt;
&lt;p&gt;People who had been making music on Udio for a year and a half could no longer export it. A few days later Udio opened a 48 hour window for existing users to download their work. Then the door closed again.&lt;/p&gt;
&lt;p&gt;Warner Music Group signed a similar deal on 19 November 2025. Trade press has since reported agreements with the independent label group Merlin and the publisher Kobalt. Sony’s case against Udio is still running.&lt;/p&gt;
&lt;p&gt;A year on, reviews from October 2026 report that downloads remain disabled on every plan and that the licensed platform has no launch date. The design Universal has described is a walled garden: you create and share inside the service, and the music stays there.&lt;/p&gt;
&lt;h2 id=&quot;a-fair-reading&quot;&gt;A fair reading&lt;/h2&gt;
&lt;p&gt;There is a real argument for what Udio is building. A platform where rights holders opted in and get paid is something the industry asked for. If the garden opens with real artists’ styles available by permission, that is a thing songcode cannot offer and does not try to.&lt;/p&gt;
&lt;p&gt;The cost fell on the people who were already there. They had made music with a tool, and one morning the tool’s terms decided they could listen to it but not have it.&lt;/p&gt;
&lt;h2 id=&quot;why-that-cannot-happen-to-a-text-file&quot;&gt;Why that cannot happen to a text file&lt;/h2&gt;
&lt;p&gt;A songcode track is a short program. The moment it is generated, the whole thing is in your browser as text. You can copy it out of the editor, download it as a file, or paste it into a note. There is no second, better copy held back on a server.&lt;/p&gt;
&lt;div class=&quot;table-wrap&quot;&gt;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th scope=&quot;col&quot;&gt;&lt;/th&gt;&lt;th scope=&quot;col&quot;&gt;songcode&lt;/th&gt;&lt;th scope=&quot;col&quot;&gt;Udio&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;what you get&lt;/th&gt;&lt;td&gt;source code, played live&lt;/td&gt;&lt;td&gt;a finished recording&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;vocals&lt;/th&gt;&lt;td&gt;no&lt;/td&gt;&lt;td&gt;yes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;where the track lives&lt;/th&gt;&lt;td&gt;in the text on your screen&lt;/td&gt;&lt;td&gt;on Udio’s servers&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;export&lt;/th&gt;&lt;td&gt;source, WAV, MP3, one WAV per stem&lt;/td&gt;&lt;td&gt;disabled since 29 October 2025&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope=&quot;row&quot;&gt;if the service changes its terms&lt;/th&gt;&lt;td&gt;you still have the source&lt;/td&gt;&lt;td&gt;you have what the terms allow&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;We could shut songcode down tomorrow and every track you had saved to disk would still be a complete description of the music: every note, every drum hit, every filter setting, readable in any text editor.&lt;/p&gt;
&lt;p&gt;That is the practical meaning of getting source. It is yours in the plain sense that nobody needs to keep a server running for you to have it. Playing it does not depend on us either: “open in strudel” hands any track to the editor at &lt;a href=&quot;https://strudel.cc&quot; rel=&quot;noopener&quot;&gt;strudel.cc&lt;/a&gt;, which we do not run.&lt;/p&gt;
&lt;h2 id=&quot;what-udio-does-that-songcode-does-not&quot;&gt;What Udio does that songcode does not&lt;/h2&gt;
&lt;p&gt;The comparison only goes so far, because the two tools make different things.&lt;/p&gt;
&lt;p&gt;Udio makes songs with singers. Its audio model can produce textures and performances no synthesizer patch will. For a lot of music, that is the whole point.&lt;/p&gt;
&lt;p&gt;songcode makes instrumental tracks from synths and drum machine samples, with no vocals. It is a narrower instrument. Within that range it gives you something a recording cannot: every decision in the track, written down where you can change it.&lt;/p&gt;
&lt;h2 id=&quot;the-general-lesson&quot;&gt;The general lesson&lt;/h2&gt;
&lt;p&gt;Ask of any tool you make things with: if this company changed its mind tomorrow, what would I still have?&lt;/p&gt;
&lt;p&gt;For a recording locked in a web app, the answer depends on the company. For a text file on your disk, it does not. &lt;a href=&quot;https://songco.de/blog/a-track-is-a-text-file/&quot;&gt;A track is a text file&lt;/a&gt; covers the rest of what follows from that.&lt;/p&gt;
&lt;h2 id=&quot;sources&quot;&gt;Sources&lt;/h2&gt;
&lt;p&gt;Checked 11 November 2026.&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Udio’s announcement of 29 October 2025: &lt;a href=&quot;https://www.udio.com/blog/a-new-era&quot; rel=&quot;noopener&quot;&gt;A New Era of Music&lt;/a&gt;. Warner announcement: &lt;a href=&quot;https://www.udio.com/blog&quot; rel=&quot;noopener&quot;&gt;Udio blog&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Timeline, founders and the 48 hour window: &lt;a href=&quot;https://en.wikipedia.org/wiki/Udio&quot; rel=&quot;noopener&quot;&gt;Wikipedia’s Udio article&lt;/a&gt;, citing the Associated Press and the Los Angeles Times.&lt;/li&gt;&lt;li&gt;State as of October 2026: &lt;a href=&quot;https://music.loop.fans/ai/what-happened-to-udio&quot; rel=&quot;noopener&quot;&gt;Loop Fans&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Walled garden design, Merlin, Kobalt and Sony status: &lt;a href=&quot;https://luminatedata.com/blog/udio-2-0-could-face-consumers-reluctant-to-embrace-ai-music/&quot; rel=&quot;noopener&quot;&gt;Luminate&lt;/a&gt;, &lt;a href=&quot;https://www.chartlex.com/blog/business/udio-umg-walled-garden-explained-2026&quot; rel=&quot;noopener&quot;&gt;Chartlex&lt;/a&gt;, &lt;a href=&quot;https://stability.ai/explainers/stable-audio-vs-competitors-licensing-export-rights-and-self-hosting-compared&quot; rel=&quot;noopener&quot;&gt;Stability AI’s comparison&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;</content>
  </entry>
  <entry>
    <title>For people who fiddle</title>
    <link href="https://songco.de/blog/for-people-who-fiddle/" />
    <id>https://songco.de/blog/for-people-who-fiddle/</id>
    <published>2026-11-11T00:00:00Z</published>
    <updated>2026-11-11T00:00:00Z</updated>
    <summary>songcode is built for the kind of music person who cannot leave a machine alone.</summary>
    <content type="html">&lt;p&gt;There is a kind of music person who buys a cheap synth and has replaced its firmware within the month. Lately the firmware is something they wrote over two evenings with a language model’s help, flashed at one in the morning, and fixed at two.&lt;/p&gt;
&lt;p&gt;songcode is built for that person.&lt;/p&gt;
&lt;h2 id=&quot;the-habit-is-older-than-the-tools&quot;&gt;The habit is older than the tools&lt;/h2&gt;
&lt;p&gt;Electronic musicians have always opened the box. Korg publishes an SDK so owners of its logue synths can write their own oscillators. Mutable Instruments released the code for its Eurorack modules, and other builders still ship hardware based on it. The norns is a small sound computer whose whole point is running scripts its owners write.&lt;/p&gt;
&lt;p&gt;A parallel tradition skipped the hardware and went straight to the code. Live coders have performed for years by typing patterns into a projected editor while a room dances to the result. TidalCycles is the language many of them use, and &lt;a href=&quot;https://strudel.cc&quot; rel=&quot;noopener&quot;&gt;Strudel&lt;/a&gt; is its port to the browser. songcode runs on Strudel.&lt;/p&gt;
&lt;p&gt;Both groups share one conviction: an instrument you cannot open is only half yours.&lt;/p&gt;
&lt;h2 id=&quot;what-changed&quot;&gt;What changed&lt;/h2&gt;
&lt;p&gt;Writing a wavetable oscillator used to require knowing DSP. Now you can describe one, read what comes back, flash it, hear what is wrong, and say so. The loop is describe, read, run, adjust.&lt;/p&gt;
&lt;p&gt;That loop is songcode, pointed at tracks. You describe the track. A model writes it as code. You run it, hear what is wrong, and either say so or reach in and fix the line yourself.&lt;/p&gt;
&lt;p&gt;The reading step is what separates this from pressing a button. A generate button that returns a finished recording gives you one move: press it again. Source gives you every move there is.&lt;/p&gt;
&lt;h2 id=&quot;what-you-get-to-play-with&quot;&gt;What you get to play with&lt;/h2&gt;
&lt;p&gt;A prompt can be as loose as “ambient. slow pads, no drums.” It can also be as specific as you like:&lt;/p&gt;
&lt;pre class=&quot;code&quot; data-lang=&quot;text&quot;&gt;&lt;code&gt;acid. 606 drums kept plain. one sawtooth line with octave jumps,
resonance high, filter opening over 16 bars. nothing else.&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Under the prompt sit 30 controls for people who have opinions. Twenty-one drum kits: sixteen sampled machines from the CR-78 to the SP-12, four synthesized kits you can tune hit by hit, and one recorded acoustic kit. Root note and scale. Swing, syncopation, ghost notes. How much the filters move. How hard the sidechain pumps. Bitcrush. Vinyl crackle, if you must.&lt;/p&gt;
&lt;p&gt;Then there is the code. Every instrument is one named stem: what plays, then the chain it runs through. &lt;a href=&quot;https://songco.de/blog/how-to-read-a-track/&quot;&gt;How to read a track&lt;/a&gt; covers the vocabulary in five minutes.&lt;/p&gt;
&lt;p&gt;And if you would sooner grab a fader, the stems view shows the same track as a mixer with a piano roll and a drum grid. Mute, solo, set a level, draw a note, or ask for a new take on one stem while the rest stay put. Note edits are written back into the code, so the text is always the real track. Levels and mutes sit on top as a mix and save with it.&lt;/p&gt;
&lt;h2 id=&quot;where-it-fits-next-to-hardware&quot;&gt;Where it fits next to hardware&lt;/h2&gt;
&lt;p&gt;songcode does not replace a groovebox. It is a good neighbour to one.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;As a pattern source.&lt;/strong&gt; The kick rhythm, the hat accents and the bassline are all written out. Read them off the screen and program them into whatever is on your desk.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;As a sample source.&lt;/strong&gt; Render a loop to WAV in the browser and load it into a sampler. The stems view exports one WAV per stem, so you can take the bassline and leave the rest. A bass exported alone keeps the pump the kick gives it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;As an arrangement sketch.&lt;/strong&gt; A full track declares its form on one line, as named sections with bar counts: &lt;code&gt;intro:16 build:8 main:32&lt;/code&gt;. Each stem says which sections it plays in. That plan transfers to any sequencer.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;As a synthesis lesson.&lt;/strong&gt; Each sound is a short chain of oscillator, filter, envelope and effects with the numbers showing. Change one and listen.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;As a way into Strudel.&lt;/strong&gt; “Open in strudel” hands the current track to Strudel’s own editor, where the rest of the language is available, MIDI output included.&lt;/p&gt;
&lt;h2 id=&quot;what-it-will-not-do-for-you&quot;&gt;What it will not do for you&lt;/h2&gt;
&lt;p&gt;It has no MIDI out of its own, no plugin version and no DAW integration. It writes instrumental music and does not sing. The sound is synths and drum machine samples in a browser, and it sounds like that.&lt;/p&gt;
&lt;p&gt;If those are deal breakers, &lt;a href=&quot;https://songco.de/blog/what-songcode-cant-do/&quot;&gt;the list of limits&lt;/a&gt; will save you some time.&lt;/p&gt;
&lt;h2 id=&quot;the-pitch-for-this-crowd&quot;&gt;The pitch, for this crowd&lt;/h2&gt;
&lt;p&gt;You already know that the interesting part of a machine is the part you can change. Most AI music tools were designed around the opposite idea, with a result on one side and the workings sealed on the other.&lt;/p&gt;
&lt;p&gt;songcode gives you the workings. The first draft comes from a model. Everything after that is you, a text editor, and a track that does what the code says.&lt;/p&gt;</content>
  </entry>
  <entry>
    <title>What songcode can’t do</title>
    <link href="https://songco.de/blog/what-songcode-cant-do/" />
    <id>https://songco.de/blog/what-songcode-cant-do/</id>
    <published>2026-11-11T00:00:00Z</published>
    <updated>2026-11-11T00:00:00Z</updated>
    <summary>No vocals, no live band, no mastering chain. The limits, stated up front, and what to use when you hit one.</summary>
    <content type="html">&lt;p&gt;Every tool has a shape. Most product pages describe only the flattering side of it. This is the other side of songcode, so you can decide in two minutes whether it is the wrong tool for you.&lt;/p&gt;
&lt;h2 id=&quot;it-does-not-sing&quot;&gt;It does not sing&lt;/h2&gt;
&lt;p&gt;No vocals, no lyrics, no spoken word. The engine plays synthesizers and short instrument samples, and nothing in it can produce a voice.&lt;/p&gt;
&lt;p&gt;If you need a singer, Suno and Eleven Music both generate vocals.&lt;/p&gt;
&lt;h2 id=&quot;it-does-not-do-acoustic-realism&quot;&gt;It does not do acoustic realism&lt;/h2&gt;
&lt;p&gt;The sound library has a sampled piano, a recorded drum kit, mallets, and plucked-string models for nylon and steel guitar. They sound like what they are: single notes and single hits, played by a sequencer. Fine in a track built around synths. Not a string quartet.&lt;/p&gt;
&lt;p&gt;A guitarist’s phrasing, a drummer’s feel or a horn section is outside what songcode can make.&lt;/p&gt;
&lt;h2 id=&quot;its-51-genres-all-come-out-of-the-same-box&quot;&gt;Its 51 genres all come out of the same box&lt;/h2&gt;
&lt;p&gt;The list runs from techno, house and trance through drum &amp;amp; bass, trap and boom bap to bossa, jazz and neo soul. Most of it is electronic. The rest is those styles as a synth and a drum machine would play them.&lt;/p&gt;
&lt;p&gt;No rock, no country, no orchestral scores, no pop ballads. You can type anything into the prompt, and the model will pull it toward what the engine does well.&lt;/p&gt;
&lt;h2 id=&quot;it-does-not-master&quot;&gt;It does not master&lt;/h2&gt;
&lt;p&gt;A songcode track is the mix the code describes. The only thing on the master is a limiter with its ceiling at -1 dBFS, there to stop clipping. No EQ, no multiband compression, no loudness targeting. The result is clean and it has punch, and it will sit quieter and rawer than a commercial release next to it in a playlist. If you want a finished master, export a WAV and finish it the way you would finish anything else.&lt;/p&gt;
&lt;h2 id=&quot;it-does-not-take-audio-in&quot;&gt;It does not take audio in&lt;/h2&gt;
&lt;p&gt;You cannot upload a song to extend it, split a recording into stems, or ask for something that sounds like a file you have. The stems in songcode are the ones the code names. songcode has no model that listens. Its input is text and its output is text.&lt;/p&gt;
&lt;p&gt;For the same reason it has no voice cloning. There are no voices.&lt;/p&gt;
&lt;h2 id=&quot;it-needs-your-own-api-key&quot;&gt;It needs your own API key&lt;/h2&gt;
&lt;p&gt;Today songcode runs on a key from Anthropic or OpenAI that you supply. That means an account with one of them and a few minutes of setup before your first track. The key stays in your browser and we never store it, but it is still a step most music apps do not ask of you.&lt;/p&gt;
&lt;h2 id=&quot;the-model-gets-things-wrong&quot;&gt;The model gets things wrong&lt;/h2&gt;
&lt;p&gt;A language model writes each track, and language models make mistakes. Every new track is compiled and tested in your browser before it plays, and the model gets one pass to repair what the test finds: a method that does not exist, a sound that does not exist, a stem that never plays. When that pass runs, it is a second model call on your key.&lt;/p&gt;
&lt;p&gt;The test catches broken. It cannot catch boring. You will still get loops that are correct and dull, and now and then a track the repair pass could not fully fix.&lt;/p&gt;
&lt;p&gt;The difference from a sealed generator is that you can see the problem. The stem is on screen, by name. Fix it, regenerate that one stem, or generate again.&lt;/p&gt;
&lt;h2 id=&quot;it-runs-on-your-machine&quot;&gt;It runs on your machine&lt;/h2&gt;
&lt;p&gt;Synthesis happens live in your browser, so a dense track leans on your CPU. A recent laptop or phone handles it. An old one may crackle.&lt;/p&gt;
&lt;h2 id=&quot;when-to-use-something-else&quot;&gt;When to use something else&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt;A complete song with a singer: Suno.&lt;/li&gt;&lt;li&gt;Vocals from a model with label and publisher deals behind it: Eleven Music.&lt;/li&gt;&lt;li&gt;Instrumental audio or sound effects from a model with a published training set: Stable Audio.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://songco.de/blog/ai-music-map-2026/&quot;&gt;The AI music map&lt;/a&gt; compares them in more detail.&lt;/p&gt;
&lt;h2 id=&quot;what-is-left&quot;&gt;What is left&lt;/h2&gt;
&lt;p&gt;Electronic music, written as a short program you can read and change, generated in the time it takes a model to type it, with no audio model anywhere in the chain. If that is the thing you want, very little else gives it to you.&lt;/p&gt;</content>
  </entry>
</feed>
