From Codes to Creativity: Why I Refactored My Generative Music System

Abstract image of a musical keyboard.

In game development, sometimes the systems that seem “clever” at the start become the very bottlenecks that stifle your creativity later on. This week, I hit one of those walls with my generative music engine and decided it was time for a major refactor.

The Problem with Camelot Numbers

Up until now, I’ve been using the Camelot Wheel system to categorize my music. If you’re a DJ, you know the drill: 1A2A3B, etc. It’s a great way to handle harmonic mixing, and it felt like a logical way to group tracks that should play together.

However, as my game world expanded, this system started to feel… restrictive. I only had a few Camelot numbers in active use, and whenever I wanted to add a new “vibe” or “biome” to the game, I found myself mentally mapping abstract numbers to actual musical themes. It wasn’t sustainable. I didn’t want to remember that 2A was my “Berlin School” theme; I wanted it to just be called Berlin.

The Solution: Theme-Based Mapping

I’ve officially ditched the Camelot numbers in favor of Theme Names.

Instead of a folder named 1A, I now have folders named Ambient-001Berlin-Industrial, or Deep-Space-Drone. This might seem like a small semantic change, but it has completely opened up the workflow.

Why this is better:

  1. Unlimited Scalability: I’m no longer bound by a fixed wheel of codes. I can create as many themes as I want, with descriptive names that actually mean something to me as a composer.
  2. Instant Integration: My mapping is now handled directly by the filesystem. If I want a new theme in the game, I just create a folder with that name in my Assets/Music/Themes/ directory.
  3. Creative Freedom: It allows me to group related tracks much more intuitively. I can have Ambient-Day and Ambient-Night without trying to find “empty” Camelot slots for them.

The Bitwig Studio to Godot Pipeline

The real magic of this transition is how it interacts with my DAW. Using Bitwig Studio, I can now create a set of related stems (Drone, Pads, Textures, Melodic) and export them as .ogg files directly into these theme folders.

Because my MusicManager in Godot is set up to scan these folders and automatically categorize tracks based on their filenames (using a simple 0-3 numbering convention for stem types), the transition from “Finished Loop” in Bitwig to “Interactive Music” in Godot takes seconds.

Final Thoughts

Refactoring a core system can be scary, but it’s almost always worth it when it removes friction from your creative process. By moving from Camelot Numbers to Theme Names, I’ve traded a rigid technical constraint for a flexible, human-readable system that lets me focus on what matters most: making the game sound great.


Stay tuned for more updates on the development of Fifty Things!

Leave a Reply

Your email address will not be published. Required fields are marked *