{"id":51217848,"url":"https://github.com/appautomaton/setloom","last_synced_at":"2026-06-28T05:03:35.664Z","repository":{"id":365723270,"uuid":"1261660195","full_name":"appautomaton/setloom","owner":"appautomaton","description":"Producer-first agentic tools for club music.","archived":false,"fork":false,"pushed_at":"2026-06-18T14:41:06.000Z","size":46,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-18T16:26:24.259Z","etag":null,"topics":["agentic-ai","audio","creative-tools","electronic-music","midi","music","music-generation","techno"],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/appautomaton.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"docs/roadmap.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-06-07T01:43:41.000Z","updated_at":"2026-06-18T14:41:26.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/appautomaton/setloom","commit_stats":null,"previous_names":["appautomaton/setloom"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/appautomaton/setloom","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appautomaton%2Fsetloom","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appautomaton%2Fsetloom/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appautomaton%2Fsetloom/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appautomaton%2Fsetloom/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/appautomaton","download_url":"https://codeload.github.com/appautomaton/setloom/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/appautomaton%2Fsetloom/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34877472,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-28T02:00:05.809Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agentic-ai","audio","creative-tools","electronic-music","midi","music","music-generation","techno"],"created_at":"2026-06-28T05:03:35.241Z","updated_at":"2026-06-28T05:03:35.657Z","avatar_url":"https://github.com/appautomaton.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- SPDX-License-Identifier: CC-BY-SA-4.0 --\u003e\n\n# Setloom\n\nMusic production has a gatekeeper: the interface. The piano roll, the plug-in\nmaze, the mixing-desk vocabulary: decades of craft stacked between you and the\nidea already playing in your head. Setloom removes the gatekeeper.\n\nYou bring taste. The agent brings labor. It writes each track's source, renders\nthe audition, and inspects the result; you listen and say what's wrong. You\nnever open a DAW, never operate a plug-in, never learn what a sidechain is\nunless you want to. The only skills required are the ones you already have:\nhearing a track, and knowing whether it moves you.\n\nSetloom, by AppAutomaton, is an open-source, keyboard-first harness for\nproducing club tracks and DJ sets. It is built around one division of labor:\n**the human is the taste owner; the agent does everything else.** It is honest\nabout where that frontier sits today.\n\n## How it works\n\nThree roles, one loop.\n\n- **You, the taste owner.** You listen and give direction in plain language:\n  *the bass is too busy before the break; make the arp darker.* You make every\n  musical decision. Nothing is final until you say so.\n- **The agent, the producer.** It turns your direction into concrete source\n  changes: writes the track's own code, renders a fresh audition, plays it back,\n  and reports the tradeoffs. It proposes; it never decides for you.\n- **The harness, the studio.** A small, unopinionated toolkit that scaffolds\n  tracks, renders, inspects audio, and keeps the work reproducible. It owns\n  technical hygiene only. It composes nothing.\n\nThe listening gate is no-click: the agent prepares and plays the audio, and you\nonly listen and type.\n\n## What you can do\n\n- Scaffold a new track (spec, runnable assembler, and listening notes) from a\n  single command.\n- Render track harnesses from editable source files.\n- Export and inspect MIDI.\n- Inspect audio from the command line: waveform, spectrum, spectrogram, stereo\n  field, and A/B comparisons.\n- Recover note candidates from reference audio (macOS).\n- Drive SuperCollider and Logic Pro as local production surfaces when a track\n  calls for them.\n\n## Quick start\n\nSetloom runs through one repo-local `uv` environment. No side virtualenvs.\n\n```bash\n# Scaffold a track. assemble.py starts as a skeleton the agent fills with the composition.\nuv run setloom new T06 --title midnight-signal --bpm 124 --key \"F# minor\"\nuv run --no-sync python music/tracks/T06/assemble.py\n\n# Audition and inspect the render\nuv run setloom play local/candidates/T06/seed-0/demo.wav\nuv run setloom inspect local/candidates/T06/seed-0/demo.wav --view all --out tmp/inspect.png\n\n# Study a reference: recover its notes (macOS) and dissect its anatomy\nuv run --group transcription setloom transcribe reference.wav --out tmp/notes.mid --events tmp/notes.json\nuv run setloom anatomize local/corpus/audio --layers\n```\n\nTranscription is macOS-only; the local Basic Pitch asset is\n`models/basic-pitch/icassp_2022/nmp.mlpackage`.\n\nPer-track code imports the primitives directly. `setloom.midi`, `setloom.audio`,\nand `setloom.conductor` carry the MIDI, DSP-hygiene, and music-theory math that\neach track's `assemble.py` builds on:\n\n```python\nfrom setloom.midi import DRUM_CHANNEL, NoteEvent, TICKS_PER_BAR\n\n# a four-on-the-floor kick across one bar\nkick = [\n    NoteEvent(DRUM_CHANNEL, 36, 110, beat * (TICKS_PER_BAR // 4), 120)\n    for beat in range(4)\n]\n```\n\n## The loop\n\n```text\nproducer thesis\n  → per-track source edit\n  → render audition\n  → play / inspect waveform + spectrum\n  → human listening note\n  → revise or promote\n```\n\nUse project-local `./tmp/` for disposable work. Durable candidates live under\n`local/candidates/`, release assets under `local/releases/`, and production\nsource under `music/`.\n\n## Where it stands today\n\nSetloom is not a one-click melodic-techno generator, and it does not pretend to\nbe. Composition is not solved.\n\nWhat works today is the loop above: an agent that converts human feedback into\nconcrete source changes quickly, researches when it helps, renders and inspects\nreproducibly, and keeps the workspace clean enough that the next pass continues\nwithout forensics. The leverage is disciplined iteration, not automation that\nreplaces judgment. That honesty is the foundation everything else is built on.\n\n## How the harness thinks\n\nThe harness owns **technical hygiene only**: mono-safe low end, clip prevention,\na loudness target, mixable edges. Everything that makes a track *that* track\n(groove, kick pattern, bass profile, energy arc, timbre) lives in the track's\nown spec and source, under the taste owner's direction.\n\nSo the code stays unopinionated. It ships primitives and opt-in diagnostics; it\nassembles nothing on its own. Machine reports and plots are navigation aids,\nnever the verdict. The verdict is always a person listening.\n\n## Local audio tools\n\n- **SuperCollider** drives scriptable synth lanes. The Lux in Umbra harness\n  routes `scsynth` through source files such as `source/pluck-synth.json`, with\n  the SynthDef topology in `harness/pluck.py`.\n- **Logic Pro**, when installed, is a local reference surface for timbre checks\n  and audition targets, never the Setloom output path. Full tool policy lives in\n  [docs/tooling.md](docs/tooling.md).\n\n## Repository map\n\n```text\nAGENTS.md                  Operating instructions for coding agents.\ndocs/                      Short project, workflow, and tooling notes.\nmusic/tracks/              Per-track specs, source, and listening notes.\nmusic/T5-lux-in-umbra/     Full production harness for \"Lux in Umbra.\"\nsrc/setloom/               CLI plus MIDI, audio, theory, inspection,\n                           scaffold, schema, and anatomy primitives.\nscripts/                   Opt-in local genAI experiments.\ntests/                     Behavior tests for the reusable toolkit.\nlocal/                     Gitignored corpus, candidates, and releases.\nmodels/                    Gitignored model weights.\ntmp/                       Gitignored scratch space.\n```\n\n## What a release carries\n\nSetloom values editable source over opaque bounces. A release is its recipe, not\njust its render:\n\n```text\nspec + source/MIDI + stems + render code + listening notes\n```\n\nAudio, proprietary samples, model weights, and disposable renders stay out of\nversion control unless a specific release process says otherwise. Anything\ndurable is regenerable from its spec, seed, and recipe.\n\n## License \u0026 trademarks\n\n- **Code, prompts, schemas, and harness logic:** AGPL-3.0-only.\n- **Documentation:** CC BY-SA 4.0 unless marked otherwise.\n- **Your music:** outputs belong to you, subject to the third-party samples,\n  models, and inputs you bring.\n- **Third-party:** the audio-to-MIDI decoder is derived from Spotify's Basic\n  Pitch (Apache-2.0); see [NOTICE](LICENSES/NOTICE).\n\n`Setloom` and `AppAutomaton` are project names; see [TRADEMARKS.md](LICENSES/TRADEMARKS.md).\nCanonical license texts live in [LICENSE](LICENSE) and [LICENSES/](LICENSES/).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fappautomaton%2Fsetloom","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fappautomaton%2Fsetloom","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fappautomaton%2Fsetloom/lists"}