mirror of
https://github.com/got-feedBack/feedBack.git
synced 2026-07-29 16:11:42 +00:00
Replace ~15 scattered hardcoded guitar/bass checks across Python and JS with a unified InstrumentRegistry. Guitar, Bass, Drums, and Keys now ship as bundled instrument plugins under plugins/instrument_<name>/, each defining its own tunings, roles, arrangement mappings, string/key counts, detection strategy, and icon. Backend: - lib/instruments.py — registry with schema validation and offset-to-MIDI - lib/routers/instruments.py — GET /api/instruments endpoint - Plugin loader recognizes type:instrument and registers definitions - lib/tunings.py is registry-aware (profiles, tuning validation, presets) - Arrangement routing uses role flags/names from registry - Progression instrument_for_arrangement accepts registry, returns None for unknown - Settings API validates against registered instrument IDs - /api/tunings populates both tuningMidis AND tunings (fixes tuner sync) - Non-stringed instruments skip string_count/tuning validation Frontend: - badges.js: dynamic instrument pills, key count selector (keyboard), per-instrument icons from plugin assets, tuner grays out for non-pitched - songs.js: auto-filters library by current instrument's arrangement roles, filter options derived from registry - instruments-settings.js: editable instrument cards with custom tunings, arrangement names, string counts. Persisted via instrument_overrides - index.html: new Instruments tab, default_arrangement moved to selector - working-tuning.js: registry-aware instrument normalization |
||
|---|---|---|
| .. | ||
| audio-effects.js | ||
| audio-session.js | ||
| interface-scale.js | ||
| library-card-actions.js | ||
| library.js | ||
| midi-input.js | ||
| note-detection.js | ||
| playback.js | ||
| tuning.js | ||
| visualization.js | ||
| working-tuning.js | ||