All skills
oaustegard avatar

/listening-to-music

@9892f18

Listen to generated music by measuring it and by reading it as sheet music: render Strudel code or record a Web Audio page through the real engine in headless Chromium, then read spectrograms, pYIN pitch lines, chroma, roughness and semitone-rub meters; engrave notes as a score with beat-by-beat harmony; transcribe a melody from audio; read MusicXML/MIDI/ABC or a score image into notes and into Strudel code. Use to check whether generated music sounds right or better (before/after a change), to match a reference track, spectrogram image or score, or to find discordant chords, a buried melody, clipping or muddy mixes. Triggers on 'does it sound better', 'listen to', 'render and check', 'spectrogram', 'sfft/stft', 'discordant', 'clashing chords', 'sounds off', 'compare to the original', 'reproduce this track in Strudel', 'sheet music', 'score', 'notation', 'MusicXML', 'MIDI', 'ABC', 'transcribe', 'OMR'. Pairs with strudeling (writing Strudel); for format conversion use processing-video.

  • 17 files
  • 73 KB
  • Updated last week
  • GitHub

Use this Skill: https://skilld.dev/gh/oaustegard/claude-skills/listening-to-music

This session only. Nothing lands on disk.

CHANGELOG.md

≈548 tokens on demand. Your agent reads this file only when SKILL.md points to it.

listening-to-music - Changelog

All notable changes to the listening-to-music skill are documented in this file. The format is based on Keep a Changelog.

[0.2.0] - 2026-09-25

Other

  • listening-to-music 0.2.0: sheet music in and out

[0.2.0] - 2026-09-25

Added

  • Sheet music, both directions, on a shared events JSON (notes.py):
    • score.py: engrave events as a score (music21 + Verovio PNG), key-aware spelling, --harmony beat-by-beat chord names, Roman numerals and rub flags, --zoom for high-resolution pages.
    • transcribe.py: monophonic melody (and --bass) from audio with glide folding, gap merging, onset snapping and pitch-specific re-attack splitting (--no-split for echo-heavy leads).
    • compare_notes.py: mir_eval note precision/recall/F1 with and without offsets, unmatched notes listed, --align for unknown downbeats, --octave-free.
    • read_score.py: MusicXML/MXL/MIDI/ABC/Humdrum, music21 corpus, and images/PDF via oemer OMR, into events.
    • to_strudel.py: events into Strudel code, one <...> step per bar.
  • SKILL.md section with measured accuracies (round trip 100%, transcription 87%/82%, OMR 6%, reading engraved images directly 100% on a blind test).

[0.1.0] - 2026-09-25

Added

  • render_strudel.mjs: render Strudel code through superdough in headless Chromium to a float WAV; --events dumps per-layer note events.
  • record_page.mjs: record any Web Audio page (click, seed hook, warm-up), served from an https origin so AudioWorklet synths play.
  • spectrogram.py: note-axis CQT spectrogram with pYIN lead line and chroma, plus features in .npz.
  • roughness.py: Sethares roughness per frame; --pair compares replicated before/after takes against take-to-take spread.
  • reference.py: decode a reference spectrogram image (colormap inversion, tick calibration, drawn pitch line) and compare a render against it.
  • clashes.py: note-level scan for semitone and minor-ninth rubs by layer pair.
  • rubs.py: audio-side rub meter (CQT peaks at 3 bins per semitone; share of tonal energy in semitone and minor-ninth pairs), with --pair replicate comparison.

Source: SKILL.md on GitHub

No third-party reports yet.

Signed by skilld at 9892f18. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub yesterday.

Activeupdated last week
metadata
{
  "version": "0.2.0"
}

README badge

README badge for oaustegard/claude-skills/listening-to-music