compare_MIDI.py has two renderers: polished_feedback_message (live) and generate_feedback_message, now reachable only from one cell in Phase1-1.5_summary.ipynb. The detail renderer was superseded because an inaccurate transcription produces inaccurate per-note claims — not because granularity lacks value. Make it available on request instead of deleting it.
Rename by role. polished_feedback_message → summary_feedback, generate_feedback_message → detail_feedback. In feedback_messages.py, replace the # Current version / # Old version headers with # --- summary --- / # --- detail ---.
Compose, don't branch. Detail is an extra section, not an alternative report:
def build_feedback(..., show_detail=SHOW_DETAIL):
parts = [summary_feedback(...)]
if show_detail:
parts += [detail_caveat_message, detail_feedback(...)]
return "\n\n".join(parts)
SHOW_DETAIL = False joins the module-level defaults, teacher-overridable via params like the thresholds. compare_performance_ED (line 1413) calls build_feedback.
Warn about transcription in the output. A detail_caveat_message constant above the detail section: these per-note details come from an automatic transcription and may be inaccurate.
Fix the duration direction first. Line 715 stores abs(...), so direction at line 1053 is always "longer" and students never see "shorter". Keep the sign; take abs() at display. (Previously the first bullet of #16, now removed from there.)
Drop Part 1 of detail_feedback. It repeats the summary in an older voice. Keep note and chord detail; delete the overview_* constants left unused.
Line numbers are for the post-#23 file.
compare_MIDI.pyhas two renderers:polished_feedback_message(live) andgenerate_feedback_message, now reachable only from one cell inPhase1-1.5_summary.ipynb. The detail renderer was superseded because an inaccurate transcription produces inaccurate per-note claims — not because granularity lacks value. Make it available on request instead of deleting it.Rename by role.
polished_feedback_message→summary_feedback,generate_feedback_message→detail_feedback. Infeedback_messages.py, replace the# Current version/# Old versionheaders with# --- summary ---/# --- detail ---.Compose, don't branch. Detail is an extra section, not an alternative report:
SHOW_DETAIL = Falsejoins the module-level defaults, teacher-overridable viaparamslike the thresholds.compare_performance_ED(line 1413) callsbuild_feedback.Warn about transcription in the output. A
detail_caveat_messageconstant above the detail section: these per-note details come from an automatic transcription and may be inaccurate.Fix the duration direction first. Line 715 stores
abs(...), sodirectionat line 1053 is always"longer"and students never see"shorter". Keep the sign; takeabs()at display. (Previously the first bullet of #16, now removed from there.)Drop Part 1 of
detail_feedback. It repeats the summary in an older voice. Keep note and chord detail; delete theoverview_*constants left unused.Line numbers are for the post-#23 file.