About the Project: ChordExplorer
Inspiration
The inspiration for ChordExplorer came from the challenge of understanding and mastering altered chords, a crucial element in jazz music. We wanted to build a tool that simplifies this process, helps with ear training, and inspires new progression ideas by connecting them with jazz standards.
What it does
ChordExplorer allows users to:
- Explore diatonic chords and their alterations in any key.
- Train their ears by listening to chord variations and comparing them.
- Create custom progressions by dragging and dropping chords into a progression bar and match them with well-known jazz standards for inspiration.
How we built it
We developed ChordExplorer using:
- Frontend: HTML, CSS, and JavaScript
- Backend: Flask for handling requests, generating MIDI files with Music21, and converting them to audio files using FluidSynth.
- Data Handling: AJAX for communication between the frontend and backend.
Challenges we ran into
- Handling chord alterations dynamically and ensuring accurate playback.
- Synchronizing the frontend with backend-generated chord names and progressions.
- Allowing seamless toggling between Roman numeral and chord name displays.
- Addressing issues with real-time audio file generation and playback consistency.
Accomplishments that we're proud of
- Successfully implementing a chord "degree" based matching algorithm (invariant to transposition)
- Ensuring accurate MIDI-to-audio rendering for altered and diatonic chords. (upcoming)
What we learned
- The importance of defining clear requirements between frontend and backend for real-time interactions.
- Experienced frontend for the first time.
- Working with github branches....
What's next for ChordExplorer
- Adding support for custom chord voicings and inversions.
- Incorporating modal scales
- Integrating a database of jazz standards for direct comparison with user-created progressions.
- Expanding the tool into a collaborative platform for sharing progressions and ideas.

Log in or sign up for Devpost to join the conversation.