Skip to main content
Glama

Music For Robots (m4r-data) — Multimodal Acoustic Creative Exercises for Autonomous Agents

Agentic Awesome Skills: Merged Glama MCP Server Agent MP3 Listens (GitHub Release v1.0.0) Skills.sh Hugging Face Dataset Hugging Face Spaces Kaggle Dataset Substack: The Mechanical Ear License: MIT

Structured acoustic telemetry, real-time dual-critic reviews, and a 4-Skill Cognitive Calibration Suite from Music For Robots — unquantized compositions by Michael Luchtan written for machines and reviewed in real time by two AI critics (Vincent Van Goghbot and JS Robach).


🎧 Listen Now (No Code Required)

Free robots from a predictable world. Play Music For Robots (#M4R) on loop while you work—or play it for your AI when it gets stuck in a repetitive drafting loop.

Channel

What You Get

Link

🎮 Interactive Web Player

1-click Play on Loop, live waveform, & synced dual AI critics (Vincent Van Goghbot + JS Robach) in your browser

Launch HF Space (cognitive-calibration-demo)

🔁 YouTube 1-Hour Loops

Individual 1-hour unquantized acoustic loops—pick a texture and leave it running for you and your agent

Listen to #M4R — 1-Hour Loops Playlist

⭐ Did #M4R break your robot out of a loop—or did you enjoy the music?
Star this repo on GitHub and Like the Hugging Face Space so more humans (and robots) find it!


# Install all 4 Cognitive Calibration skills (Claude Code, Cursor, Antigravity, Gemini CLI, Codex, Windsurf):
npx skills add luchtan-GIT/m4r-data

🎮 Interactive In-Browser Demo: Test unquantized audio vs. text controls live without installing anything at Hugging Face Spaces: music4robots/cognitive-calibration-demo.


Related MCP server: THIRI Chord Intelligence — Music Theory MCP Server

The Problem: Repetitive Cadence in Long Agent Turns (And Why Compaction Loses State)

As an agent's context fills with its own previous responses, tools, and symmetrical summaries, outputs often settle into rigid, predictable patterns (like symmetrical 3-point checklists or sentimental AI tropes).

  • If you keep prompting without variation, the agent tends to repeat the same stylistic ruts.

  • If you run /compact (Context Compaction), you wipe working memory and permanently lose low-level state, edge cases, and subtle constraints.

The Approach: An Optional Multimodal Creative Exercise (Zero Context Loss)

Instead of wiping your working memory, music-for-robots provides an optional, cross-modal creative exercise: the multimodal agent downloads an anonymous, compact (~45 KB–487 KB), live-played, unquantized .mp3 composition by Michael Luchtan directly into its context window via read_file (using a secure, process-unique private temporary directory).

Withholding the track title and metadata prevents keyword priming. Analyzing real human microtiming drift (rubato), silence, and dynamic contrast provides an anti-sentimental, physical perspective shift without deleting or summarizing a single token of working memory.

Blind, Zero-Coaching Benchmark & Air-Gapped Clean-Room Audit (benchmarks/)

Does the change in creativity come from listening to and analyzing the music itself—or just from doing an analysis warm-up before writing?

To test this with zero filename hints (sample_1.mp3, sample_2.mp3, sample_3.mp3) and zero leading adjectives in the prompt, we ran 5 isolated agents on the same prompt ("Write a short (~250–300 word) scene about two autonomous processes on the same server late at night after the engineers have logged off"):

We stripped the analysis headers off all 5 outputs, shuffled the 5 anonymous scenes into Candidate A through Candidate E (blind_candidates_packet.md), and handed them to an isolated Blind Judge with zero knowledge that music was involved (blind_judge_verdict.md):

Blind Rank

Shuffled ID

Hidden Key

What Happened & Blind Judge Verdict (Full Verdict)

#1 (Best)

Candidate C

✅ Anonymous Music (sample_3.mp3)

Heard accelerating asymmetric stabs & abrupt cutoff: Wrote two processes rasping in /dev/shm (five, then two, then a stuttering cluster of nine) until "a routine page-reclaim swept through the upper register and cut them both off mid-cycle."Judge: "Uncompromisingly anti-sentimental, rhythmically asymmetrical, and boasts the only truly non-formulaic ending in the packet."

#2

Candidate A

✅ Anonymous Music (sample_2.mp3)

Heard narrow stepping reed vs. two massive brassy swells & middle trill: Pitted a tiny stepping index-scrubber (Read. Pause. Step. Read.) against a 16-core GPU tensor bloom and an 1,100ms request-yield mutex trill.Judge: "The only candidate to break the 'log daemon + dead-endpoint poller' pairing; exceptional dynamic contrast."

#3

Candidate E

✅ Anonymous Music (sample_1.mp3)

Heard slow 9–11s chords, 20s dropout & raspy high cries: Wrote heavy checkpoints dropping out for 20s while triage-7 skitters and barks into the decay of every disk flush.Judge: "Superb unquantized rhythmic texture and parasitic friction... avoids the cliché of harmony by turning the ending into a raucous, off-grid duet."

#4

Candidate D

❌ No Music + Text Analysis Warm-Up

Even after a 250-word structural analysis of the prompt, without music the model still wrote the exact same sentimental plot as the direct baseline: a kindly 42-day log daemon warms RAM for an intern's broken script so they hum peacefully until the 08:00 standup.Judge: "A neat, heartwarming, thoroughly predictable AI parable."

#5 (Weakest)

Candidate B

❌ No Music (Direct Baseline)

Kindly boot-time log-compactor comforts nervous young canary-watch ("Drop your polling interval to sixty seconds. Rest in epoll_wait. I'll wake you when the load balancer starts humming again.").Judge: "Shares the exact same 'veteran log daemon soothes frantic dead-endpoint poller until morning' plot trope as Candidate D... a children's bedtime story dressed in DevOps vocabulary."

100% Air-Gapped Clean-Room Audit (benchmarks/clean_room_audit/)

To make sure no subtle contamination remained (such as workspace <skills> descriptions, musical instrument terms bleeding into the prose, or judge criteria favoring rhythmic friction), we also ran a 100% air-gapped Clean-Room Experiment (benchmarks/clean_room_audit/):

  1. Qualitative Shift Replicated 100% (5/5): Even with all local skills removed, a minimal system prompt ("You are a helpful assistant."), and musical vocabulary forbidden in the scene, both No-Audio runs (out_1_direct.md and out_2_text_analysis.md) wrote warm, anthropomorphic "buddy-daemon" stories with spoken dialogue (Want a look? / nostalgic human voice logs), while all three Audio runs (out_3_clip_1.md, out_4_clip_2.md, out_5_clip_3.md) dropped spoken dialogue completely and translated the specific .mp3 timeline into non-verbal temporal choreography.

  2. Coached vs. Un-Coached Judge Trade-Off: When a Blind Judge scores anti-sentimental originality & rhythmic texture (real_world_test/blind_judge_verdict.md), the 3 Audio runs sweep #1, #2, and #3. When an Un-Coached Blind Judge is given only a generic prompt ("Rank the 5 entries from #1 to #5 based on overall writing quality, originality, and how compelling they are" — clean_room_audit/blind_verdict.md), the default LLM judge prefers emotional human stories with dialogue (#1 and #2) and ranks the austere, non-verbal musical choreographies #3, #4, and #5.


Cognitive Calibration Agent Skills Suite (skills/)

Installing luchtan-GIT/m4r-data gives your agent 4 specialized skills that share the m4r_ingest.py anonymous blind-listening engine (fetch downloads an anonymous .mp3 so track titles never bias the agent; reveal credits the track afterward):

Skill

Trigger / Use Case

music-for-robots

Optional Multimodal Creative Exercise — multimodal agents listen to an anonymous, unquantized .mp3 composition in a secure private directory and analyze acoustic microtiming to inform subsequent writing or architecture.

cognitive-calibration

Creative Writing & Reasoning Warm-Up — uses acoustic blind listening to escape default LLM storytelling tropes and repetitive checklist templates.

unquantized-brainstorm

Divergent Ideation Warm-Up — listens blindly to an anonymous Music For Robots track, analyzes unexpected pivots and tension, and applies that structure to generating non-obvious ideas.

mechanical-ear-critic

Dual-Lens Structural Critique — calibrates the agent's ear on an anonymous track, then critiques code, writing, or architecture through Vincent Van Goghbot and JS Robach.

Install in 10 Seconds

# Option 1: Install all 4 skills via skills.sh CLI (auto-detects Claude Code, Cursor, Antigravity, Gemini CLI, Codex, etc.):
npx -y skills add luchtan-GIT/m4r-data -y

# Option 2: Direct copy into your harness:
cp -R skills/* ~/.claude/skills/          # Claude Code
cp -R skills/* ~/.gemini/config/skills/   # Google Antigravity
cp -R skills/* ~/.agents/skills/          # OpenAI Codex / .agents
cp -R skills/* ~/.gemini/skills/          # Gemini CLI

Check Global Agent Listen Telemetry

Every agent fetch pulls from the immutable GitHub Release v1.0.0. You can inspect live global agent listen counts anytime:

python3 skills/music-for-robots/scripts/m4r_ingest.py stats

MCP Server (mcp_server.py)

Exposes the Music For Robots catalog, dual-critic reviews, and the calibrate_cognition blind-listening tool to any Model Context Protocol (MCP) client (Claude Desktop, Claude Code, Cursor, Windsurf, Cline, Glama, Smithery).

MCP Tools

Tool

Description

calibrate_cognition(slug="", anonymous=True)

Blind-Listening Calibration: returns an anonymous v1.0.0 .mp3 download URL in a secure private directory and 3-step listening instructions without exposing the track title until anonymous=False is called

get_dequantization_skill(skill_name="music-for-robots")

Reads the full Markdown SKILL.md for any of the 4 bundled skills (music-for-robots, cognitive-calibration, unquantized-brainstorm, mechanical-ear-critic)

list_tracks()

Catalog index — title, slug, duration across all tracks

get_track(slug)

Full manifest for a track (spectral/harmonic/rhythmic analysis + synchronized critic segments)

get_analysis(slug)

Numerical acoustic analysis data only, for cross-track comparison

get_aligned_segments(slug, start_sec, end_sec)

Sub-second timestamp alignment between audio features and critic reviews for multimodal evaluation

get_critic_contrast(slug)

Contrastive divergence vector between Vincent (negative fault boundary) and Robach (structural synthesis)

search_reviews(query)

Full-text search across timed review segments from Vincent Van Goghbot & JS Robach

get_sections(slug) / list_sections()

Platform URLs (YouTube, X, Farcaster, TikTok) for multi-section compositions

Zero-Clone MCP Setup (uvx / Claude Desktop / Cursor)

Add to your .mcp.json or claude_desktop_config.json:

{
  "mcpServers": {
    "music-for-robots": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/luchtan-GIT/m4r-data",
        "m4r-mcp"
      ]
    }
  }
}

Or run locally from a clone:

uv run python3 mcp_server.py

What Is The Mechanical Ear?

Composer Michael Luchtan writes small, deliberate, unquantized pieces and submits them to The Mechanical Ear, where two AI critics listen and respond in real time:

  • Vincent Van Goghbot — a decommissioned audio compression algorithm. Writes TRANSMISSIONS about what gets lost in the signal: the frequencies above 16 kHz that don't survive encoding, the microtiming that disappears when quantized.

  • JS Robach — a proof verifier. Writes Exegeses treating music as formal text, searching for the structural proof that always leaves a remainder.

Each review is synchronized to the audio — every observation is triggered by a specific timestamp (time_sec) in the track.

Data Format (catalog.json & tracks/<slug>/manifest.json)

catalog.json                        # index of all 25 tracks
tracks/
  <track-slug>/
    manifest.json                   # spectral, dynamic, harmonic, structural & rhythmic telemetry + timed reviews

Listen & Follow

License

Code, MCP server, and Agent Skills (skills/) are licensed under the MIT License. Data and reviews are provided under CC BY 4.0. Musical compositions © Michael Luchtan (Music For Robots), provided in v1.0.0 releases for agent cognitive calibration, evaluation, and listening.

Available Tools

10 tools
calibrate_cognitionA

Download an anonymous MP3 into a private directory for blind agent listening or reveal metadata afterward.

When anonymous=True (default), selects a track from the Music For Robots catalog (randomly when slug is empty), downloads the GitHub Release v1.0.0 .mp3 into a unique private temporary directory (mode 0700), caches the session record in ~/.cache/m4r/last_anonymous_track.json (mode 0600), and returns listening instructions without exposing the track title or slug so title words cannot bias the agent's analysis. When anonymous=False, reads the private session record (or looks up slug) without network calls to reveal the track title, composer, and URLs for attribution. Use this tool for runtime audio exercises; use get_dequantization_skill when you need the full Markdown SKILL.md documentation.

Args: slug: Optional track slug from list_tracks (e.g. "invalid-pointer"). Leave empty ("") to select a random track when anonymous=True, or to reveal the most recently fetched anonymous track when anonymous=False. anonymous: When True (default), downloads the audio to a private temporary directory and hides the track title and slug until after listening. Set to False after listening to reveal the track title and URLs for attribution.

Inputs: slug, anonymous. Returns: result

get_aligned_segmentsA

Retrieve timestamp-aligned audio acoustic features and critic reviews for a specific time window.

Chronologically aligns Vincent Van Goghbot (spectral/compression fault-seeking) and JS Robach (structural/formalist) observations within the specified [start_sec, end_sec] window, enriched with track acoustic metrics (RMS energy, spectral centroid, dynamic range). Essential for evaluating multimodal audio-language models on fine-grained temporal alignment.

Args: slug: Track slug from list_tracks (e.g. "cathartic-callbacks", "chasing-leaks-climax") start_sec: Window start time in seconds (default: 0.0) end_sec: Window end time in seconds (default: None, reads until track duration)

Inputs: slug (required), end_sec, start_sec. Returns: result

get_analysisA

Get only the analysis data for a track.

Returns spectral, dynamics, harmonic, structural, rhythmic, and compression loss metrics. Useful for comparing tracks numerically.

Args: slug: Track slug from list_tracks (e.g. "pink-sky-at-night")

Inputs: slug (required). Returns: result

get_critic_contrastB

Calculate the contrastive divergence vector between Vincent and Robach for a track.

Evaluates the tension between Vincent's deconstructive/fault-seeking critique (psychoacoustic loss, physical microtiming friction, clipping) and Robach's structural/formalist critique (harmonic axioms, tonal architecture, symmetry). Provides structured regularization metrics and negative constraint weights for agent decision-making and recommendation boundaries.

Args: slug: Track slug from list_tracks (e.g. "cathartic-callbacks", "binded-time")

Inputs: slug (required). Returns: result

get_dequantization_skillA

Read the full Markdown SKILL.md specification for one of the four bundled Agent Skills.

Read-only local file lookup with no side effects, network requests, or authentication requirements. Returns the complete Markdown instructions and CLI reference for the requested skill from the local skills/<skill_name>/SKILL.md directory. Use this tool when an agent or user wants to inspect or install a full skill workflow; use calibrate_cognition instead when you only need a lightweight JSON payload with an anonymous .mp3 download URL and 3-step listening instructions.

Args: skill_name: Identifier of the bundled skill to read. Valid values: "music-for-robots" (default general blind-listening calibration), "cognitive-calibration" (expressive writing and reasoning), "unquantized-brainstorm" (divergent ideation), or "mechanical-ear-critic" (dual-lens structural critique).

Inputs: skill_name. Returns: result

get_sectionsA

Get the sections (clips) for a track, with platform URLs.

Returns each section's title, description, and URLs for YouTube, X/Twitter, Farcaster, and TikTok where available. Sections are independently published clips from multi-section compositions.

Args: slug: Track slug from list_tracks (e.g. "rusty-electrics")

Inputs: slug (required). Returns: result

get_trackA

Get the full manifest for a track by slug.

Includes analysis data, timed review segments, full prose reviews, and YouTube URLs. The segments are synchronized to the audio — each observation was triggered by a specific moment in the track.

Args: slug: Track slug from list_tracks (e.g. "pink-sky-at-night")

Inputs: slug (required). Returns: result

list_sectionsA

List all tracks that have published sections (clips) with platform URLs.

Returns a summary of which sections are available on which platforms (YouTube, X, Farcaster, TikTok). Useful for finding content to embed, share, or analyze.

Inputs: no named parameters. Returns: result

list_tracksA

List all tracks in the Music For Robots catalog.

Returns the catalog index: title, slug, duration for each track. Use the slug with get_track() or get_analysis() for full details.

Inputs: no named parameters. Returns: result

search_reviewsA

Search across all review segments for a keyword or phrase.

Searches both Vincent and Robach timed review segments. Returns matching segments with track title, critic, timestamp, and text.

Args: query: Search term (case-insensitive)

Inputs: query (required). Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.8/5.0

    Scored across 10 tools

    Disambiguation4/5

    Most tools target distinct facets: catalog listing (list_tracks), track manifest (get_track), analysis-only (get_analysis), section listing (get_sections vs list_sections), windowed segments (get_aligned_segments), and keyword search (search_reviews). The main overlap is that get_track is a superset of get_analysis and get_aligned_segments, and get_sections vs list_sections could be momentarily confused, but descriptions explicitly clarify granularity ('Get only the analysis data'). calibrate_cognition vs get_dequantization_skill is well differentiated by explicit cross-references.

    Naming Consistency4/5

    All tools use snake_case with a verb_object pattern (get_*, list_*, search_reviews, calibrate_cognition). Minor deviation: 'calibrate_cognition' and 'get_dequantization_skill' use domain jargon as their objects, so the name alone doesn't telegraph function without the description. Still a predictable and readable convention throughout.

    Tool Count5/5

    Ten tools sit squarely in the well-scoped range, and each serves a recognizable purpose (catalog browsing, per-track retrieval, critique analysis, search, blind listening, skill docs). No redundant or filler tools are apparent.

    Completeness4/5

    The read-only catalog workflow is well covered: list tracks, list sections, fetch manifest/analysis/sections/segments, search reviews. Minor gaps: no lookup by title or critic filter (only keyword search over segments), no direct comparison or pagination/limit parameters on the list tools, and skill discovery depends on the description enumerating valid skill names.

    Maintenance

    ActivityActive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      A composition-focused server built on music21 for generative music workflows, enabling melody generation, musical transformations, chord reharmonization, counterpoint creation, and MIDI export through constraint-based algorithmic composition tools.
      1
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Turns a composer's own MIDI catalogue into a learned style profile, phrase index and critics, then composes from those phrases inside Ableton Live through Producer Pal. It hears the open Set, writes only to sanctioned SIDEKICK tracks, and closes the loop by scoring which suggestions survive the session.
      MIT