Home Creators Posts Import Register Favorites Logout

Videos

  • 583394299.mp4

Downloads

Content

NEW theory explainer.

CHORD TREE v4.2 by EZBOT (Huge Update - Audio, MIDI, Mac OS support)

I have been wanting a chord assistant for a long time. This chord app (currently Windows only, though I will update with a macOS version soon) uses an algorithm tailored for jazz and neo-soul, but I think everyone will appreciate the musical results. It's simple: follow the instructions on the screen to build a tree of chords. You can start with a random chord or choose a starting chord. Either way, you will end up with branches of complex chord progressions you might never have thought of. This was designed specifically with the Digitone 2 in mind, and there will be a video explaining exactly why soon. Let me know what you think and please report any bugs below. Thanks! Mac OS Support added 12.22.25

-- Next Steps: Create a custom Icon (anyone up for that task?).

CHORD TREE v4.0 - CONSOLE EDITION User Manual & Technical Documentation

Chord Tree is a generative music theory tool designed to assist musicians in creating sophisticated Neo-Soul, Jazz, and R&B chord progressions. It operates in the terminal, providing a history of your progression while offering harmonically relevant suggestions to extend your chord branch.

It features a built-in polyphonic synthesizer for instant feedback and a MIDI engine to drive external hardware or DAWs.

========================================================================

INSTALLATION ========================================================================

NO INSTALLATION REQUIRED This application is a standalone executable.

HOW TO RUN

Download or locate the "ChordTree v4.exe" file.

Double-click the file to launch.

A console window will appear, indicating the app is ready.

Note: On some systems, you may see a "Windows protected your PC" popup because this is a custom tool. Click "More Info" -> "Run Anyway" to proceed.

======================================================================== 2. GETTING STARTED

Connect your MIDI interface (optional).

Launch the application.

Start a Progression:

Random: Press 'r' to let the engine pick a starting Neo-Soul chord (e.g., Cmaj7, Am7).

Manual: Type any chord name (e.g., Ebmaj9, Fm11) to begin in that key.

======================================================================== 3. COMMAND REFERENCE

CORE WORKFLOW

r: Random Start. Clears the history and picks a random "Seed Chord" to begin a new tree. Sets the song Key automatically based on the result.

1-8: Select Suggestion. Choose one of the 8 suggested chords to add to your branch.

0: Reset. Wipes the entire tree history and clears the Key signature.

Manual Input: Type a chord name (e.g., G7, Bbmaj7) at any time to manually force a chord into the progression.

MODES & PLAYBACK

play: Sequence Branch. Plays your entire chord history from start to finish with 1/4 note timing.

l: Enter Live Mode. Opens a focused view for auditioning chords.

Arrows: Navigate the cursor.

Spacebar: Audition (Play) the selected chord.

Enter: Lock/Unlock the selected chord.

Esc/Q: Exit to main menu.

s: Toggle Strum. Adds a 40ms delay between notes in a chord to simulate a guitar or piano strum (affects Audio & MIDI).

a: Toggle Audio. Turns the internal sine-wave synthesizer ON/OFF.

m: Toggle MIDI. Turns MIDI output ON/OFF.

VOICING CONTROLS (THE CONSOLE) These commands change how chords are voiced across the keyboard.

Center (Command: c [note]) Sets the "gravity center" of the voicing engine. All notes will try to cluster nearest to this note. Example: "c c4" sets standard middle voicings. Example: "c c3" sets low, dark voicings. Example: "c c5" sets high, shimmering voicings.

Bass (Command: b [number]) Adds a root note dropped by N octaves below the cluster. Example: "b 0" turns the bass off (Cluster only). Example: "b -1" adds a bass note 1 octave down. Example: "b -2" adds a bass note 2 octaves down (Deep bass).

Lock (Command: lock [number]) "Freezes" the voicing of the chord at a specific index number. Example: If you like how chord #2 sounds, type "lock 2". Now, if you change the Center or Bass settings, chord #2 will not change, but the others will.

MIDI SETUP

Ports (Command: mp) Lists all available MIDI output ports. Type the number next to the port to select it.

Channel (Command: mc [number]) Sets the MIDI Output Channel (1-16). Default is Channel 1.

======================================================================== 4. TECHNICAL ARCHITECTURE

The application is built on three distinct engines:

ChordTreeEngine (The Brain) Role: Handles music theory, chord generation, and voicing logic. Voicing Logic: It uses a "Center Gravity" algorithm. Instead of fixed inversions, it calculates the distance of every chord tone to a user-defined center note and picks the octave that is physically closest. This ensures smooth voice leading automatically.

Suggestion Logic:

Resolutions: Always offers the Tonic chord if available.

Diatonic: Guarantees 2 safe, in-key chords.

Exotic: Fills the remaining slots with Tritone subs, Secondary Dominants, and Borrowed chords (Modal Interchange) to provide the "Neo-Soul" flavor.

AudioEngine (The Sound) Role: Generates real-time audio internally. Synthesis: Uses high-precision sine wave synthesis with an exponential decay curve to simulate the natural pluck and fade of a piano string.

MidiEngine (The Connection) Role: Handles external communication. Driver Handling: Uses a "destroy-and-recreate" pattern for port switching to prevent MIDI ports from hanging or becoming unresponsive on Windows.

======================================================================== 5. COLOR CODING KEY

In the suggestion menu, chords are colored to indicate their harmonic function:

Green: Resolution (Home Key).

Purple: Diatonic (Strictly in Key).

Yellow: Secondary Dominant (V of V, etc.).

Blue: Borrowed Chord (from Parallel Minor/Major).

Red: Tritone Substitution / Exotic.

12.19.25 Added MIDI OUT, Audio Audition, Live Mode, Bass Note Offset, and Chord Centering

12.19.25 Fixed: MIDI channel was stuck on 1, ADDED more resolution types, increased suggestion max to 10 from 8.

12.20.25

Updated to 4.2

Improved logic to remove duplicate suggestions

changed bass lowering command from "b" to "bass"

in live mode it now explains in an abbreviated way why the next chord works

12.22.25

Added Mac OS Support

Files

Comments

Jim Arbon

Wow - you bloody legend!

Micah groom

I love a good cli program. Nicely done!

ezbot

There is a nostalgia to it isn't there.

Micah groom

Yes, definitely. Its also far less distracting.

Daniel Wehner

Thank you a ton! Note: If you don't have patience you can run it using wine on macos without any problems.

Eric Wolfe

I might be able to help you with the icon

ezbot

id love that :)

Jim Arbon

Woah - nice work adding a synth engine and midi!! If you want a hand porting it to Mac gimme a shout, but with how good AI coding is these days, you probably don’t need to. Plus you might already know some peeps :)

ezbot

I think for python I should be fine. To switch to another language I might need some help

Shawn P Garbett

I got this working on Linux. Works with Wine 11. Theory/approach question: Why is the 'resolution' in minor key starting on a tonic minor chord a major chord of the tonic?

ezbot

The chord logic is tricky. Probably just an error I’ll have to work out. The resolution it’s doing is a variation of the first chord entered

Shawn P Garbett

Without question chord logic is incredibly complex. I'm sure you'll get it ironed out. I'm trying to learn how Baroque progressions work. It's completely different than classical. Which is also entirely different than Jazz. There's so many possible directions one needs to adopt some modality to work within or all is confusion.

Justin Worrall

Amazing work. Would you consider open sourcing it? Github? Also how come we suddenly jumped to v4.0?

Mathieu Nantel

Someone’s been vibe coding ;) don’t know what this is written in, but there’s no way this is something Claude can’t port this to OSX.

ezbot

That’s how many revisions I went through haha

ezbot

So much fun. That + a bit of Python 🐍 and my idea to help me write Neo soul chord progressions arrived

Justin Worrall

Python should be completely cross platform. You shouldn't need separate Win/Mac versions. The same version should work everywhere. But I guess you're compiling it to a Windows executable.Just release the Python!

ezbot

But then you need to have Python installed on your computer. I’ll add the Python files next time I do an update which should be soon cause I have a few more ideas to cram in there.

ezbot

I added more resolutions other than tonic with 4.1. Though baby if the chords it was offering were resolutions without explicitly calling them that

Troy Outtram

Hey Mate, I would love to have a look at the raw code? Any chance of getting added to the github repo? Hope you’ve been well.

ezbot

when i finish it, ill open it up on github i think but I want to see my idea realized before it gets influenced by others

Felton

I can't seem to get this open for my Mac. Am I missing something?

ezbot

I would use the web version, it’s much better and has more features. Https://www.modbang.com/chordtree

Felton

Ty sir