MCP App Store
by KeenEthics
Music Tutor icon

Music Tutor

By Mayank Sanganeria

Get New App Alerts

Overview

Music Tutor puts real music in the conversation: notation you can see and hear, drawn from public-domain works. Ask a music question and the answer comes with an interactive card that engraves the notes, plays them with note highlighting, and offers follow-ups. - Find a piece: "How does the Moonlight Sonata start?" shows the real opening bars, playable. Or browse famous openings by composer, era or form. - Chords and scales, spelled right: any chord or scale on a staff, a keyboard and a guitar chord box. - Harmony in real music: ask for a Neapolitan sixth, a German sixth or a deceptive cadence and see it in Chopin, Mozart or Schubert, with the chord coloured, labelled and played; open more of the piece from any example. - Check part writing: paste a four-part chorale or two-voice counterpoint and get parallel fifths, spacing, range and resolution problems marked by bar and beat. - What to learn next: "I can play Für Elise, what next?" suggests pieces from a level 1-10 learning path, each with its opening and what it teaches. - Sight-reading: short passages of real piano music from level 1 to 10, or focused on one skill such as ledger lines or dotted rhythms. - Ear training: interval, chord, inversion, scale and mode quizzes built for exactly what you want to drill; at the end you see what you mixed up and get a suggested next quiz. - Lead sheets: carols, hymns and folk songs with melody, words and chord symbols; chords play under the tune. - Transpose for your instrument: "for my clarinet", "for alto sax", "lower it for my voice". - Guess the composer: a listening game with a daily puzzle and a shareable score. Only music out of copyright is shown (published before 1930 and composer dead at least 71 years, or traditional), with a reviewed hold list for later arrangements and lyrics. No account or sign-in, and no personal information requested; see the privacy policy for what is logged. Cards link to the free practice pages of Real Sight Reader and Real Ear Trainer for playing along on your own instrument.

Tools

check_part_writing

ChatGPT
Check a learner's harmony or counterpoint homework for voice-leading errors — deterministically, the same way every time, which an LLM reading notes off a page cannot promise. Use for "check my part writing", "are there parallel fifths here", "check my counterpoint", "did I voice this chorale correctly". The card engraves what was submitted, circles the offending notes (red for errors, amber for warnings) and lists every finding by bar and beat; a clean score says so plainly. Input is a 4-part SATB chorale (style: "chorale", the default) or 2-voice counterpoint (style: "species", first species only). Give it as ABC: either one multi-voice tune with V:S V:A V:T V:B (or any 4 voice ids — order is inferred from pitch, not the names), or score + bass with two voices per staff (e.g. V:1 V:2 in each) for the 2-per-staff layout. Two voices only: score + bass, one voice each. MusicXML also works: one <part> per voice, at most four. Optional key (e.g. "G", "d minor") overrides the score's own key signature for the leading-tone check; optional numerals, one per chord, ride along in the result for you to reference but are never verified against the notes. Checked: parallel/consecutive 5ths, 8ves and unisons between every pair of voices (contrary motion into one is a softer warning); hidden (direct) 5ths/8ves between the outer voices when the top voice leaps into them; voice crossing and overlap; spacing (more than an octave between adjacent upper voices, more than a 12th between tenor and bass); voice ranges; a leading tone in an outer voice not resolving up by step to the tonic; a doubled leading tone; a chordal seventh not resolving down by step; and, for species counterpoint, a dissonant interval on a downbeat or a phrase not beginning/ending on a perfect consonance. What it does NOT do: full harmonic analysis. The leading-tone and seventh checks work from raw pitches and the key signature (a note that IS the leading tone, or IS a seventh above the sounding bass), not a true Roman-numeral reading — so an inner-voice leading tone, or a genuine V→I that this heuristic misses, is not flagged. Anything needing real harmonic judgment is left to you. Example: {"score": "X:1\nM:4/4\nL:1/4\nK:C\nV:S clef=treble\nV:A clef=treble\nV:T clef=bass\nV:B clef=bass\n[V:S] G4 | A4 |]\n[V:A] E4 | F4 |]\n[V:T] C4 | B,4 |]\n[V:B] C,4 | D,4 |]"} · species: {"score": "X:1\nM:4/4\nL:1/4\nK:C\nc4 | d4 | c4 |]", "bass": "X:1\nM:4/4\nL:1/4\nK:C\nC,4 | C4 | C,4 |]", "style": "species"}

ear_training_quiz

ChatGPT
Train a learner's ear with a short listening quiz: they hear something, pick what it is, get immediate feedback. You decide exactly which contrasts to drill; the card generates correctly spelled, balanced questions and grades them. Describe the quiz as a spec: family (interval | chord_quality | inversion | scale), options = the answers to tell apart (2–12, from the family's vocabulary), play (interval: melodic_up | melodic_down | harmonic; chords/inversions: block | broken; scale: up | down | up_down), register (low | mid | high | wide), roots to fix the root/tonic, weights to over-sample something, questions (3–12). Or start from a preset and override fields. Vocabularies — interval: m2 M2 m3 M3 P4 TT P5 m6 M6 m7 M7 P8 m9 M9 m10 M10 P11 P12 m13 M13 m14 M14 P15; chord_quality: 6 7 9 major m dim aug sus2 sus4 m6 maj7 m7 mMaj7 m7b5 dim7 7sus4 add9 maj9 m9; inversion: root 1st 2nd 3rd (+ qualities, e.g. ["major","m"] or ["7"]); scale: major, natural minor, harmonic minor, melodic minor, dorian, phrygian, lydian, mixolydian, locrian, major pentatonic, minor pentatonic, blues, whole tone. Presets: intervals-1, intervals-2, intervals-3, intervals-4, intervals-5, chords-1, chords-2, chords-3, inversions-1, inversions-2, scales-1, scales-2, modes-1. Pick contrasts that teach: start wide apart (P5 vs M3), then close in on what they confuse (m3 vs M3), then make it harder (melodic_down, harmonic, wider register). The result gives a difficulty summary (closest pair, estimate). When they finish, the card puts results in your context: every question (answer, response, latency, replays), a confusion count ("m3→M3": 2) and a suggested next spec with its reason. Use them to set the next round; do not reveal the answer key before then. Example: {"preset": "intervals-2"} · the pair they confuse: {"family": "interval", "options": ["m3", "M3"], "play": "harmonic", "weights": {"m3": 2}} · {"family": "chord_quality", "options": ["maj7", "7", "m7"], "play": "broken"} · {"family": "scale", "options": ["dorian", "mixolydian", "aeolian"], "roots": ["D"]}

find_harmony_example

ChatGPT
Show a real passage from the classical repertoire that contains a harmony concept the learner is studying: "show me a real Neapolitan sixth", "an example of a German augmented sixth", "what does a deceptive cadence sound like in real music", "V/V in Mozart", "a borrowed chord", "a cadential 6-4". The card engraves the bars, labels the target chord under the bass (Roman numeral), marks its bar and plays it back. Pass concept in any common form ("N6", "Neapolitan", "Ger+6", "It6", "V/V", "deceptive cadence", "PAC", "mode mixture", "cadential 6-4", "suspension", "hemiola") and optionally composer. The result gives the key, the Roman numeral and the chord's exact spelling (e.g. "bII6 in C minor: D♭–F–A♭ over F") — explain from those facts, do not re-derive them. Pass exclude with ids already shown to get a different example. Some examples come from research datasets licensed for noncommercial use; the card shows their attribution. Example: {"concept": "neapolitan"} · {"concept": "German augmented sixth", "composer": "Mozart"} · {"concept": "deceptive cadence", "exclude": ["bach:bwv10_7:cadence_deceptive:m6:V-vi"]}

find_music

ChatGPT
Fetch real notation from the classical piano corpus. Two ways to call it: (1) A piece the learner names — "show me Chopin's C-sharp minor nocturne", "how does the Moonlight Sonata start", "the main theme of Clair de lune": pass query the way they said it (composer, title, key, opus, nickname). You get the piece's iconic opening bars; candidates lists near misses — if one fits better, call again with a more specific query. (2) No specific piece — "play me some Chopin", "what does Baroque music sound like", "what's a mazurka": pass composer, era and/or form instead of query. You get 3–5 famous openings as a playable list; page gives the next few. To read it on another instrument or sing it lower, pass transpose ("for my clarinet" → "clarinet", "lower it for my voice" → "-M2" or a key); the result reports written vs concert key. Only public-domain music is available; a copyrighted match is an error, never invented music. Example: {"query": "chopin nocturne c# minor"} · browse: {"composer": "Chopin"} · {"era": "baroque"} · {"form": "mazurka"} · for alto sax: {"query": "fur elise", "transpose": "alto sax"}

guess_the_composer

ChatGPT
A listening game: the card plays the famous opening of a real piece (no notation, no title) and the learner picks the composer from four. After each answer it reveals the composer's portrait, dates, a fun fact and the notation. Use when they want a music game, a quiz on composers or styles, or "the daily puzzle". difficulty: "hard" = the wrong answers are from the same era (Haydn vs Mozart), "easy" = from other eras. daily: true = today's shared puzzle (same for everyone, UTC date), with a shareable result line like "Music Tutor #12 🎹 3/5". When they finish, the card puts per-round results in your context — use them to talk about what gives each style away. Do not reveal the answer key before then. Example: {"rounds": 5, "difficulty": "hard"} · {"daily": true}

show_chord_or_scale

ChatGPT
Show exactly which notes are in a chord or scale, spelled correctly, on a staff and a piano keyboard, with playback. Use for "what notes are in F#m7", "spell a Bb diminished 7th", "D harmonic minor", "how do I play Bb on piano", "what does a Lydian scale sound like". Chords play block then broken; scales play one octave up. Spelling is letter-correct (Cb major = Cb Eb Gb; Bbdim7 = Bb Db Fb Abb), and the result names the piano key for each note (Fb is played on E) plus the degree formula — quote those rather than working the spelling out yourself. Chord types: 6, 7, 9, major, m, dim, aug, sus2, sus4, m6, maj7, m7, mMaj7, m7b5, dim7, 7sus4, add9, maj9, m9 (also "minor", "diminished", "half-diminished", "dominant 7th", "°7", "ø7", "Δ7"). Scales: major, natural minor, harmonic minor, melodic minor, dorian, phrygian, lydian, mixolydian, locrian, major pentatonic, minor pentatonic, blues, whole tone (also "minor", "aeolian", "ionian"). Example: {"kind": "chord", "root": "F#", "type": "m7"} · {"kind": "scale", "root": "D", "type": "harmonic minor"} · {"kind": "chord", "root": "Bb", "type": "major"}

show_lead_sheet

ChatGPT
Show the melody of a song with its chord symbols (and words, where the score has them), plus a piano keyboard diagram for every chord it uses. Use for "chords for Silent Night", "how do I accompany Amazing Grace", "lead sheet for Jingle Bells", "what chords are in Greensleeves". Carols, hymns and folk songs in the public domain. Pass the song as the learner said it. transpose moves melody, chord symbols and diagrams together ("in G", "for my clarinet", "-M2" to sing lower). The result lists the chords in order of appearance with their spelled notes — use them to explain the progression. Example: {"query": "silent night"} · {"query": "amazing grace", "transpose": "G"}

show_notation

ChatGPT
Turn any musical idea you are teaching into real staff notation the learner can see and hear: a scale, chord, progression, melody, rhythm or excerpt. Use it whenever an example would land better on a staff than in words. You write the music as ABC (preferred), MusicXML or MEI; the card engraves it and plays it back with note highlighting. Single staff: {"score": "X:1\nM:4/4\nL:1/4\nK:G\nG A B c | d4 |]"} Piano grand staff, either (a) multi-voice ABC in score: "X:1\nM:4/4\nL:1/4\nK:C\nV:1 clef=treble\nV:2 clef=bass\n[V:1] [E2G2c2] [D2G2B2] |]\n[V:2] C,2 G,,2 |]", or (b) right hand in score and left hand in bass: {"score": "X:1\nM:4/4\nL:1/4\nK:C\n[E2G2c2] [D2G2B2] |]", "bass": "X:1\nM:4/4\nL:1/4\nK:C clef=bass\nC,2 G,,2 |]"}. Never both. Two voices at most; both need the same number of bars. ABC rules: X:, M:, L:, K: headers (K: last); every bar must add up to the meter; chord lengths go on EVERY note — [C2E2G2], not [CEG]2. The result reports notes, measures, staves, key, meter, duration and warnings (e.g. a bar that does not add up). If warnings come back, fix the score and call again so the learner sees correct notation. Write in concert pitch and pass transpose for "for my clarinet / trumpet / alto sax / horn" (written for that instrument, plays at concert pitch) or "lower it for my voice" (an interval like "-M2", or a key like "Eb"). Example: {"score": "X:1\nM:4/4\nL:1/4\nK:F\nF G A B | c4 |]", "transpose": "trumpet"}

show_passage

ChatGPT
Show more of a piece the learner has already met — the bars around a harmony example, the next bars after an opening, or the whole piece (up to 64 bars). Use for "show me more", "what happens next", "the whole piece", "put that chord in context". Needs the work_id from an earlier result (find_music, find_harmony_example, sightreading_exercise, show_lead_sheet). Bars are canonical, one-based positions, including any pickup. Pass score_id from an earlier result to keep the same edition. Standalone harmony examples use their own edition’s numbers and cannot be used as canonical bar references. The card scrolls with playback. Example: {"work_id": "ludwig-van-beethoven-fur-elise-woo-59", "whole": true} · {"work_id": "…", "start_bar": 90, "end_bar": 110, "highlight_bar": 98, "source": "dcml"}

sightreading_exercise

ChatGPT
Give a learner a short passage of real, public-domain piano music to sight-read, graded 1 (single hand, steps) to 10 (advanced, both hands). Use when they want reading practice, ask for something to play, or want an example at their level. The card engraves the passage, plays it back with note highlighting, and offers its MusicXML file for download. If their level is unknown, ask for a familiar piece and use suggest_next_pieces, or offer a short level-1 trial. Do not ask beginners to choose a number from 1–10. Adjust only after their feedback. The result tells you what was shown (title, composer, bars, key, meter, grading facts, MusicXML) so you can explain why it suits the level and what to watch for. To practise one skill, pass focus: ledger-lines, accidentals, many-sharps, many-flats, dotted-rhythm, triplets, syncopation, sixteenths, chords, position-shift, scale-run ("I struggle with ledger lines" → "ledger-lines", "dotted rhythms" → "dotted-rhythm"). Not every skill exists at every level; a miss names the nearest level that has it. Example: {"level": 3} · by composer: {"level": 5, "query": "Bach"} · a skill: {"level": 4, "focus": "dotted-rhythm"} · repeat a passage: {"level": 3, "seed": 418495958}

suggest_next_pieces

ChatGPT
Suggest real pieces to learn next on the piano, from Music Tutor's learning path (levels 1–10, public domain): "what should I learn after Für Elise?", "I just finished the Minuet in G, what next?", "a level 4 piece", "something by Chopin at my level". The card shows each piece's famous opening, playable, with its level and what it introduces. Pass after = a piece they can play (title as they said it, or a work_id), and/or level 1–10. You get pieces from later in the same level (to consolidate) and one level up (to stretch), one per composer first, each with a "teaches" line — use those lines to explain why. composer / era narrow it; exclude skips work_ids already suggested. Levels are the path's editorial judgment, not an exam grade — say "around level N" and that editions vary. If their piece is not on the path the result says so: ask for another familiar piece, or offer a short level-1 sight-reading trial and adjust from their feedback. Never require them to know our level numbers. Example: {"after": "fur elise"} · {"level": 3} · {"after": "clementi sonatina op 36 no 1", "composer": "Bach"}

Capabilities

Interactive

Example Prompts

Click any prompt to copy it.

Similar Apps