Ensemble Practice Tool

Ensemble: A Music Practice Tool

Over the past several days, I've been expanding on my music practice tools with a new project called Ensemble. It's an evolution of the metronome work I did previously, designed to be a more complete accompaniment for practicing solos or writing songs. Like the last project, I built this in collaboration with Gemini, using it to help architect the chord transposition logic and the synchronization between the drum and chord engines.

Ensemble brings together two distinct modules - Chord Buddy and Groove Buddy - into a single interface. Chord Buddy is a progression synthesizer that can take standard Roman numerals (like I-V-vi-IV) and translate them into full audio. It handles "best-fit" voice leading automatically, so when you change chords, the notes move smoothly rather than jumping erratically across the keyboard.

Key Features

  • Smart Notation: Support for Roman numerals, Nashville Numbers, and absolute chord names, allowing you to switch perspectives on the fly.
  • Performance Styles: Choose between sustained pads, rhythmic pulses, or syncopated "pop" rhythms for the chord accompaniment.
  • Integrated Sequencer: The Groove Buddy module provides a 16-step drum grid with presets for genres like Jazz, Funk, and House.
  • Global Transposition: A one-click transposition tool that shifts both the visual labels and the synthesized frequencies instantly.
  • Deep Customization: A mixer for balancing levels, swing settings for the drum feel, and a "Chord Voicing" slider to change the register of the backing tracks.

Technical Details

On the technical side, the app is powered entirely by the Web Audio API. Instead of loading heavy audio samples, Ensemble synthesizes its sounds using oscillators and noise generators, which keeps the app incredibly lightweight and ensures the timing is sample-accurate.

Gemini was instrumental in helping me manage the shared state between the two engines, ensuring that the drum patterns and chord changes stay perfectly aligned through a unified look-ahead scheduling system. We also added a sharing feature where the entire state - BPM, progression, and key - is encoded into the URL, making it easy to save or send a specific setup.

Like its predecessor, Ensemble is a Progressive Web App (PWA), so it can be installed on your device and works without an internet connection. It's been a great way to see how AI can help build more complex, multi-layered tools that feel responsive and professional.

Try it here: https://ensemble.brndn.zip

links

social