Welcome to Mankunku

Jazz ear training — call and response. Pick your instrument to get started.

Glossary

Terminology used throughout Mankunku's codebase and documentation.

Jazz & Music Theory

TermDefinition
ii-V-IThe most common jazz chord progression. In C major: Dm7 → G7 → Cmaj7 (the ii, V, and I chords of the key).
Approach noteA note (often chromatic) used to lead into a target note, creating forward motion.
BebopJazz style from the 1940s characterized by fast tempos, complex harmony, and chromatic passing tones. Bebop scales add a chromatic passing tone to create 8-note scales.
Chord toneA note that belongs to the current chord (root, 3rd, 5th, 7th). Target notes for strong beats.
ChromaticMoving by half steps (semitones). Chromatic approach = approaching a note from a half step above or below.
Circle of fifthsOrdering of all 12 keys by ascending fifths: C, G, D, A, E, B, Gb, Db, Ab, Eb, Bb, F.
Concert pitchThe actual sounding pitch, as opposed to written pitch for transposing instruments.
DiatonicNotes belonging to the current key's scale (no accidentals outside the key signature).
EnclosureSurrounding a target note with notes above and below it before resolving to the target.
Ghost noteA note played very softly, often in parentheses in notation. Adds rhythmic texture.
LeapAn interval larger than a step (> 2 semitones). Leaps often require "recovery" — stepwise motion in the opposite direction.
LickA short melodic phrase that can be used in improvisation. Musicians build vocabularies of licks.
Passing toneA non-chord tone that connects two chord tones by step.
PentatonicA 5-note scale. Minor pentatonic (1, b3, 4, 5, b7) is foundational in jazz and blues.
StepAn interval of 1 or 2 semitones (half step or whole step).
SwingA rhythmic feel where pairs of eighth notes are played with a long-short pattern rather than evenly.
SyncopationEmphasis on off-beats or weak beats, creating rhythmic tension.
Target noteA chord tone placed on a strong beat (beats 1 and 3 in 4/4 time).
Transposing instrumentAn instrument whose written notes differ from concert pitch. Tenor sax is a Bb instrument: written C sounds as Bb (concert).
TurnaroundA chord progression that leads back to the beginning of a form (e.g. iii-VI-ii-V).
Voice leadingSmooth connection between notes by choosing the closest available pitch, often across chord changes.

Audio & Signal Processing

TermDefinition
AnalyserNodeWeb Audio API node that provides frequency and time-domain analysis data without modifying the signal. Used for pitch detection.
AudioContextThe Web Audio API's central object. Manages audio graph, scheduling, and output. Requires user gesture to start.
AudioWorkletWeb Audio API feature that allows custom audio processing on a separate thread, avoiding main-thread jitter. Used for onset detection.
ClarityA confidence metric (0–1) from the pitch detector indicating how periodic the signal is. Higher clarity = more confident pitch reading.
EMAExponential Moving Average. Used in onset detection to maintain a running baseline of audio energy.
FFTFast Fourier Transform. Converts time-domain audio into frequency-domain data. The AnalyserNode uses fftSize=4096.
GM (General MIDI)A standard mapping of instrument sounds to program numbers. smplr uses GM SoundFont files.
HFCHigh-Frequency Content. A spectral feature that emphasizes transients (note attacks). Weighted sum of sample magnitudes.
McLeod Pitch MethodAn autocorrelation-based pitch detection algorithm well-suited for monophonic instruments. Implemented by the Pitchy library.
MIDIMusical Instrument Digital Interface. In Mankunku, MIDI note numbers represent pitches (60 = middle C, each integer = one semitone).
OnsetThe moment a new note begins. Detected via energy changes in the audio signal.
PPQPulses Per Quarter note. Tone.js uses PPQ for tick-based scheduling (default 192).
RMSRoot Mean Square. A measure of signal amplitude used for the input level meter.
SoundFontA file format for instrument samples. smplr loads GM SoundFont files for playback.
TransportTone.js's central timeline/scheduler. Controls BPM, position, and event scheduling.

Application & Code

TermDefinition
ABC notationA text-based music notation format. Mankunku converts phrases to ABC strings, which abcjs renders to SVG.
Adaptive stateThe algorithm's internal tracking of difficulty level, pitch/rhythm complexity, and recent scores.
DetectedNoteA note captured from the microphone: MIDI pitch, cents deviation, onset time, duration, clarity.
Display levelCosmetic level derived from average per-scale proficiency (separate from content difficulty tier).
Difficulty levelFunctional level (1–7) that controls what musical elements appear. Adjusted by the adaptive algorithm.
DTWDynamic Time Warping. An algorithm for aligning two sequences of different lengths. Used to match detected notes to expected notes.
FractionA [numerator, denominator] tuple representing note durations and offsets. Avoids floating-point errors.
Grid anchoringSnapping detected note onsets to the Transport's beat grid so they can be compared to expected offsets.
Latency correctionSubtracting the median timing offset from all detected onsets to absorb constant human/system delay.
NoteResultPer-note scoring output: expected note, detected note, pitch score, rhythm score, missed/extra flags.
PhraseThe core data type: a sequence of notes with harmony, key, time signature, difficulty, and category metadata.
RuneSvelte 5's reactivity primitive. $state, $derived, $effect, $props are runes.
ScoreThe output of scoring an attempt: pitch/rhythm accuracy, overall percentage, grade, per-note results.
SessionA single practice attempt: play a phrase, record the response, get scored.