aether-midi
MIDI engine for AetherDSP — device routing, clock sync, and microtonal tuning.
Features
- MIDI device routing — connect hardware controllers to graph nodes
- MIDI clock — sync BPM to external MIDI clock source
- Tuning tables — 17 microtonal tuning systems including all 7 Ethiopian qenet modes (Tizita major/minor, Bati minor/major, Ambassel, Anchihoye), Arabic maqam (Rast, Bayati, Hijaz), Indian raga (Yaman), Gamelan (Slendro, Slendro Stretched, Pelog), and Just Intonation (5-limit, 7-limit)
- Event system — typed MIDI events (NoteOn, NoteOff, CC, PitchBend, Clock)
- JUCE Integration — Use these tuning systems in C++ JUCE plugins via
aetherdsp-juce-bridge
Tuning systems
use TuningTable;
// Ethiopian qenet (all 7 traditional modes)
let tizita = ethiopian_tizita; // Tizita major
let tizita_minor = ethiopian_tizita_minor; // Tizita minor
let bati = ethiopian_bati; // Bati minor (most common)
let bati_major = ethiopian_bati_major; // Bati major
let ambassel = ethiopian_ambassel; // Ambassel
let anchihoye = ethiopian_anchihoye; // Anchihoye
// Arabic maqam
let rast = arabic_maqam_rast;
let bayati = arabic_maqam_bayati;
let hijaz = arabic_maqam_hijaz;
// Indian raga
let yaman = indian_raga_yaman;
// Gamelan
let slendro = gamelan_slendro;
let slendro_stretched = gamelan_slendro_stretched; // Ethnomusicologically accurate
let pelog = gamelan_pelog;
// Just Intonation
let ji_5 = just_intonation; // 5-limit (traditional)
let ji_7 = just_intonation_7_limit; // 7-limit (blues, barbershop)
// Standard Western
let tet = equal_temperament; // 12-TET
// Custom — provide your own frequencies
let custom = from_frequencies;
License
MIT — see LICENSE