I would call this morning another “oh sh–” moment for me.
The above video showcases a terminal-UI Rust program that was developed with AI. The music itself is created by the Rust code. I designed the architecture of the instrument layers and effects chains, but AI built the logic. This means that it runs the same way each time, it runs offline, and it runs on very low compute. It also means that I’ve been able to release the full code as Open Source – this last point, I think, will be especially important moving forwards.
My Inputs

My process started with me sketching out the rough instrument layers and synthesis/effects chain (see above). Having recently learned that LLMs do pretty well with Mermaid diagram code, I translated my pencil sketch (see below), figuring out I wanted to add a bass + sub-bass instrument during the process:

That Mermaid code made up part of my initial AI prompt, along with specifications that I wanted this to be a Terminal-UI program, written in Rust, designed so it should produce the same results on a computer in 20 years time (reduced reliance on crates). I also specified the “glitch ambient” genre, and a number of other musical constraints that I have developed over my decade of music-making, pre-AI.

I’m finding I love using pencil and paper next to me while using a LLM. It’s a great blend of modalities, helping me to internalize and discover new angles, while still utilizing the incredible iteration speed of current GenAI.
Iteration and Discovery
Aside from the above inputs from me, I also bring continuous testing of the results, and steering each iteration. One of the most powerful things I’m finding with AI-assisted development is that it closes this iteration loop to a short enough timeframe that I now get the same joy from working on software that I get from music composition.

I knew that I wanted the Terminal UI to convey as much knowledge about the mechanics of this software-music-artifact. This is one of the areas in which I am really trying to gain a better understanding. As we start developing software at a speed where it is no longer viable to be manually checking the code, I suspect we need to be making software that is self-documenting and self-validating. GenAI is exceptionally good at that, and this offers us a real opportunity:
I am not comfortable calling myself the “creator” of this music. I designed it. The AI built it. We continued this process iteratively. This process ended up feeling more akin to a process of discovery than of straight creation. The same way that science is at its best when it is shared in the open, I can see humanity being able to share our artistic discoveries more efficiently with AI assistance. After all, GenAI was trained on the works of the public, and so it is only right that we use it to empower the public commons.
—
_download: 0009-Discoverers.wav
_code-source: https://github.com/johnoestmannmusic/1000-shrines-of-spirit
_music-license: CC0 / Public Domain
_code-license: MIT