Versions
The current version of ode and of the Songcode Audio Engine, how a song names its version, which engine reads which ode, and how to find the engine a platform runs.
ode and the Songcode Audio Engine each have a version. ode is on 0.3.0. The Songcode Audio Engine is on 0.1.1.
#How the numbers move
A version has three numbers, as in 0.3.0. The middle number moves for a big release: new words, new parts of a song, or a change to what something means. The last number moves for a tweak: a fix, or a small addition that changes nothing a song already says. The first number moves only for a change that reshapes the whole language, and that has not happened yet.
The two numbers move on their own. A change to the engine that does not touch the language (a better reverb, a faster render, a fix in how a note is played) moves only the engine’s number.
#Naming a version in a song
A song starts with the line ode. That is all Songcode writes, and all a song needs.
ode
title "glass elevator"
tempo 126
form loop 1
stem kick: club {
kick [x... x... x... x...]
}
mix {
kick 0db
}
The line can also name a version, as in ode 0.3.0 or ode 0.3. A song that names one asks for that version or newer. A song that does not is read as the newest ode the engine knows.
Tracks saved before ode was versioned start with ode 1. They open and play as they always have, and nothing rewrites them. ode 1 reads as ode 0.3.0.
#Which engine reads which ode
Every engine reads every version of ode up to the one it was built with. A newer ode can use words an older engine has never seen, so an older engine may not read it.
| Songcode Audio Engine | reads ode |
|---|---|
| 0.1.1 | up to 0.3.0 |
| 0.1.0 | up to 0.3.0 |
When an engine meets a song that names a newer ode than it reads, it does not play it and says so, with both versions: the song’s ode and the newest ode the engine reads. A song that just says ode gives no version to compare, so an older engine reports any word it does not know, line by line, as it would for any mistake.
#Where each version runs
The Songcode Studio always runs the newest Songcode Audio Engine. If the Studio says a song is too new, reload the page.
Other places that read ode can run a different engine version from the Studio, so each one says which it runs:
- The API.
GET /api/v1returnsode(the newest version it reads) andengine(its name,versionandreads). Every check of a song, in a draft, a track or acheckcall, carries the same two fields. See the API. - MCP.
check_codeand every tool that returns a song’s check include the engine’s version and the ode it read the song as. See for agents.
A song that plays in the Studio and fails elsewhere with a version message needs that platform’s engine to catch up. Nothing in the song has to change.