playback

playback is a skill for Claude Code, Codex from Generous-Corp/pulp. It costs 32 tokens per session (17,258 once invoked), scanned A, original, MIT.

A playback-engine guide for compiling and publishing immutable audio playback programs from project snapshots. It covers timing, sample rates, changed tracks, and threaded or UI-hosted compilation.

In plain words
What is it for?
Use it to build playback programs, manage transport clocks, compile changed tracks, and schedule compilation on suitable executors.
Why use it?
It helps keep audio playback consistent when projects or tracks change and prevents mismatched timing or sample-rate data from being published.

Skill for Claude CodeCodex

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/generous-corp/pulp/playback
Any agent
npx skills add Generous-Corp/pulp --skill playback
Clone the repo
git clone --depth 1 https://github.com/Generous-Corp/pulp

Made for: Claude Code, Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for playback

README.md
[![agentmods](https://agentmods.dev/badge/skills/generous-corp/pulp/playback.svg)](https://agentmods.dev/skills/generous-corp/pulp/playback)
Your own site
<a href="https://agentmods.dev/skills/generous-corp/pulp/playback"><img src="https://agentmods.dev/badge/skills/generous-corp/pulp/playback.svg" alt="Measured on agentmods" height="20"></a>
Per session 32 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 17,258 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00032 $0.17258
Opus 5 $0.00016 $0.08629
Sonnet 5 $0.00006 $0.03452
Haiku 4.5 $0.00003 $0.01726

Measured today against content hash 8016b19617c1, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

playback scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured today.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.agents/skills/playback/SKILL.md · 1,203 lines

How it starts

The opening of the file, as written. The whole thing — 1,203 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Playback

Playback has two independent public surfaces: MasterTransport for the block clock, and immutable compiled playback programs. Build a ProgramCompileRequest from one captured immutable Project snapshot, an external monotonically increasing document revision, a shared precompiled tempo map, an explicit sample rate, and an explicit DirtyTrackSet. The request rate is invalid by default; set ProgramCompileRequest::sample_rate from the engine configuration and compile the tempo map at that same exact RationalRate. Submission normalizes both and fails synchronously if the request rate is invalid, above the compiled-rate ceiling, or differs from the map, preventing one program from mixing sample domains. Drive it with DeferredCompileExecutor::run_for() on threadless/UI hosts or use WorkerCompileExecutor on native threaded hosts. The compiler is the sole publisher to its PlaybackProgramStore. Use sparse TrackCompilePolicy deltas when a track changes provider selection or adoption policy. The compiler validates availability, forces that track through the dirty path, retains omitted published policies, and coalesces pending deltas with latest-track wins. For this phase, only ProviderKind::Arrangement with the arrangement-only availability mask is valid; reject launcher or external-input claims until their provider payloads are compiled.

For MediaRef clips, prepare a DecodedAudioAssetPool off the audio thread. Use DecodedAudioAssetPool::decode_wav() for bounded in-memory WAV bytes, then pass the immutable pool in ProgramCompileRequest::audio_assets. The existing compiler incrementally lowers media clips into each TrackProgram; do not build a second playback-program model. TimeConform::None uses the existing bounded native-rate source mapping after sample-rate conversion. TimeConform::Resample uses bounded stateless varispeed: map each rendered musical tick to the same fraction of the referenced source range and derive the effective source step for anti-aliasing. Use the compiled tempo map's analytic fractional sample-to-tick inverse for ordinary playback and precise host ticks for host beat mapping; sample-fraction interpolation across a tempo ramp is not musical phase. TimeConform::Stretch is compiled off the audio thread: slice the source, fixed-SRC it into the compiled timeline-rate domain, drive the finite stretcher with an analysis-boundary tempo schedule, and publish only an immutable artifact with exactly the authored timeline frame count. Use the scalar double finite builder for deterministic offline compilation, then convert its exact result to the public float artifact in bounded blocks. Document-tempo playback consumes that artifact 1:1. For live host-tempo projection, prepare a complete RealtimeStretchProgramRuntime off the audio thread and stream the artifact through its preallocated low-latency processor; the audio callback may stretch but must never allocate, lock, or prepare DSP. The runtime publishes one fixed causal latency for all parallel audio and MIDI paths and resets coherently on transport/program epochs. Keep source/tempo/algorithm semantic identity in the artifact cache key and document revision/program generation in separate provenance. Compiler work-block size is scheduling only and must change neither key nor output. Never route Stretch through Resample, pad/trim a length mismatch, or fall back to None. Gain and anchor-native fade durations live on the immutable Clip. Missing, mismatched, or over-capacity assets fail compilation instead of creating a silent placeholder. When sequence lowering flattens a complete nested media clip, preserve its authored TimeConform value. Reject a nested source window that trims a Resample or Stretch clip with NestedSequenceUnsupported; advancing a raw source-frame offset is valid only for unconformed media and would corrupt the authored phase until playback owns a conform-aware source-range mapping.

When host beat mapping intentionally makes musical material follow the host tempo, keep absolute clips, take-comp segments, and frozen artifacts on TransportRange::timeline_sample_start; those sources are sample-domain content and must not inherit the beat projection. Carry precise fractional host tick endpoints through every callback and nested ProcessContext projection; integer timeline_tick_* fields remain compatibility metadata and must not drive host-mapped interpolation, loop admission, note scheduling, automation refinement, MIDI clock, or metronome enumeration. A precise host-mapping rejection must not fall back to document-tempo placement. For musical audio, derive the effective source-position step per output frame. A converter prepared only for the asset-rate/timeline-rate ratio cannot anti-alias faster host playback, so prepare and share a per-MediaRef-range multiresolution audio pyramid off the audio thread. Build it incrementally inside the compiler work budget, count it against both converter-count and aggregate prepared-byte limits, including persistent sinc tables and container storage, and seed unchanged programs back into the cache. Clamp every pyramid level to the exact referenced source range so neighboring asset frames cannot bleed into a clip. Fixed-rate and variable-rate kernel construction are part of that same incremental budget: initializing a converter must not synchronously populate every sinc phase before yielding. Use fixed-size, incrementally allocated prepared chunks whose persistent footprint is computable; implementation-defined container bookkeeping cannot sit outside the byte cap. Each 2:1 stage must low-pass before decimation; select the coarsest level that leaves a bounded residual step, then use its prebuilt reconstruction kernel. Do not approximate extreme ratios by clamping a tiny cutoff onto a fixed-width source-rate kernel: once the sinc support contains too few zero crossings, normalization turns it into a short moving average and aliases despite the nominal cutoff. The fixed asset-rate/timeline-rate path therefore fails compilation beyond its honest kernel range, while host-tempo playback uses the prepared pyramid to retain its wider bounded contract.

Read the full file on GitHub · 1,203 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. today First seen · 1,203 lines · 32 tokens per session scan A 8016b19617c1

Subscribe to this mod's changes

playback is a skill published in the GitHub repository Generous-Corp/pulp (16 stars, last pushed today), licensed MIT. It adds 32 tokens to every session and 17,258 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-04.

Related

Other skills, from other repositories

systematic-debugging

Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes.

obra/superpowers · 21 tokens

local-ai-agents

Build local-first AI agents that run entirely on a developer workstation with Microsoft Foundry Local and Qwen function-calling models. Covers Small Language Models (SLMs), the OpenAI-compatible local endpoint, sandboxed local tools, local RAG with Chroma, local MCP servers, hybrid cloud/local routing, and the…

microsoft/ai-agents-for-beginners · 200 tokens

next-cache-components-adoption

Turn on Cache Components in a Next.js app and resolve the blocking routes it surfaces. Use when the user wants to enable, adopt, or migrate to Cache Components, flip the cacheComponents flag, work through a flood of blocking-prerender / instant validation errors, run the cache-components-instant-false codemod, or…

vercel/next.js · 95 tokens

chat-pet-sprite-creation

Use when creating or changing VS Code chat pet sprite art, sprite sheets, state animations, eye treatments, Stable/Insiders variants, or pet transitions under src/vs/workbench/contrib/chat/browser/widget/media/chatPet.

microsoft/vscode · 53 tokens

cpu-profile-analysis

Analyze V8/Chrome CPU profiles (.cpuprofile) and DevTools trace files (Trace-.json). Use when: profiling performance, investigating slow functions, comparing code paths, finding bottlenecks, analyzing timeToRequest, understanding call trees from sampling profiler data, analyzing layout/paint/rendering, investigating…

microsoft/vscode · 71 tokens

insight-error-page

Write or audit an insight-kind error page for the Next.js dev overlay. Use when creating a new errors/ .mdx page, auditing an existing one, or checking that a page matches the framework fix cards. Covers page structure, title alignment, FixCard cards with Copy prompt button, code snippets, terminology verification…

vercel/next.js · 83 tokens