Repository navigation
M12: ship Cento (Live devices and the Max patch), GUI redesign, read-me tutorial - #3
Merged
Merged
Conversation
Max 9's [v8ui] answers a "summary" message itself, so the corpus window's script never got it: the Max window said "unknown message argument type" and "v8ui: bad arguments for message summary" each time the list was shown (reported with the Bach Chorales Figured Bass corpus on), and the line under the list stayed as it was. Renamed to "footer"; a test keeps scripts off the names Max keeps for itself. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Qc2Gb9RBL6vFmghUimczFu
On a Mac, opening cento.maxpat didn't find ~/Documents/Cento: Max's Folder object seems to list a folder's files only unless its typelist asks for folders. listNames now lists twice (as it comes, then with typelist ["fold"]). When no Cento folder is found, the Max window now says so and where it looked, with how many names Max listed there (it was silent in a clone of the repository). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Qc2Gb9RBL6vFmghUimczFu
Before shipping, the panels follow the order you use them (M12):
- Composing panel: compose (the one strong blue button), seed, next and
export midi on top; then chorales..., beats, chorale form; then
stream, phrases, transpose, signatures; the status line; listening
test... and a tools menu at the bottom.
- Tools menu: load a chorale (in C or A minor, or its own key), play the
test phrase, stop and clear the queue. The Original Key switch is gone:
the menu item says the key.
- Max version: plug-in instruments get their own window (set up...,
emi.instruments); the panel keeps play, tempo, audio, output and the
plug-in switch, and a line on hover help.
- Plain names: chorales..., chorale form, signatures, transpose,
listening test..., keep, chance, taste report, write clips, test clips.
Live's parameters keep their names, so mappings and automation in
saved sets still work. Engine messages follow ("no chorales yet: click
chorales and switch a folder on", "chance 0.50: ...").
- Grey headings (PLAY, COMPOSE, EMILY, CLIPS AND VOICES), one look per
kind of control, "Press compose, then play." in an empty roll.
- The panels' piano roll is 260 px (it was 400): the pop-up window has
the large one. The Live device is 884 px wide.
- Tests: every panel's controls fit inside it and none overlap; the tools
menu, the instruments window and the renamed buttons are wired as
before. docs/controls.md regenerated; README, the read-me, PLAN and the
M11 and M12 checklists (new section 0) follow.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Qc2Gb9RBL6vFmghUimczFu
The button and its window keep their M11 names: corpora, and the window
Cento: corpora. The engine's messages say so again ("no corpus: switch a
folder on in corpora", "no corpus yet: click corpora and switch a folder
on"); the hover text, docs/controls.md, README, read-me and checklists
follow. The rest of the GUI redesign stays.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Qc2Gb9RBL6vFmghUimczFu
The taste layer was called Emily, which reads as David Cope's Emily Howell and says nothing about what it does. On screen it is now Magdalena, after Anna Magdalena Bach, singer and copyist of Bach's music: - Her panel's heading is MAGDALENA, with "user's taste" beside it. - The music you keep is Magdalena's notebook (her notebooks of 1722 and 1725 collected the pieces she loved). - The pop-up window has an explain Magdalena button: a small window (emi.magdalena, "Cento: about Magdalena") on who she is, what like, dislike, chance, keep, mix, novelty and snapshots do, and a credit to Cope's Emily Howell with the note that Cento is independent of him. - Status lines, the Max window, the taste pane, hover texts, docs/controls.md, README, the read-me, the Cento folder's note, PLAN and the M12 checklist (section 0) say Magdalena. Nothing inside is renamed: the emily-* modules, cento.emily.json, the engine's messages and Live's parameters keep their names, so saved work and mappings carry on. A test checks that no panel or window still says Emily (Emily Howell aside). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Qc2Gb9RBL6vFmghUimczFu
- Each part of the strip sits on a solid colour of its own (a [panel] behind everything, ignoring clicks): playing green (both versions' left panel), composing blue, Magdalena brown. Their labels and headings are light (the grey on dark was hard to read). - Lighter secondary text in the pop-up window's taste pane, the corpus window and the piano roll (bar numbers, note names, the empty-roll hint). - The pop-up window: the grey line beside each view's title now starts where the title ends; with the longer titles (Magdalena) it ran into them. - chance is temperature again: the dial (now wide enough for the word), its hover text, the status line and the explanation. - Tests: each section's [panel] covers it and its text is light; the overlap check leaves the panels out. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Qc2Gb9RBL6vFmghUimczFu
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Qc2Gb9RBL6vFmghUimczFu
like and dislike are a little shorter, so the slider (its name and value shown) fits between keep/window and taste report, which now spans the panel. The parameter keeps its name. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Qc2Gb9RBL6vFmghUimczFu
Bottom right of the composing panel, beside the tools menu: on, a chorale you load keeps its own key; off, it's moved to C major or A minor (the default). It's the same Live parameter as before (Original Key), restored from the settings file in the Max version. The tools menu goes back to one "load a chorale..." item, which follows the switch. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Qc2Gb9RBL6vFmghUimczFu
patchers/ now holds only cento.maxpat, cento.brain.amxd and cento.voice.amxd. The internal patches moved to patchers/parts/ and the built scripts to patchers/scripts/. Max and Live find them when the patchers row in File Preferences has Subfolders ticked (README Setup, M12 checklist step 0). Frozen devices and the app embed everything, so users of the download see no change. The corpus stays in corpus/. - maxgen.py writes the internal patches to patchers/parts/ - build.js writes the bundles to patchers/scripts/ - emi-settings finds patchers/ from a patch in parts/ - tests: the new layout, and the engine running from parts/ Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Qc2Gb9RBL6vFmghUimczFu
- Every button is a live.text in button mode, like the switches. In Live, compose, next, like, dislike, keep and write clips can be mapped; the other buttons are hidden from mapping and automation. - A dark row along the top names each section, centred above it (PLAY or CLIPS AND VOICES, COMPOSE, MAGDALENA, PIANO ROLL); the sections are 149 px high below it. "user's taste" sits under Magdalena's name. - The listening test and the less-used tools (load a chorale with its original key switch, the test phrase, stop and clear) move from the shared panel to the Max version's more features window (emi.extras). - Magdalena's panel: no taste report button (her one-line report stays); the temperature slider is tall enough for its name and value. - No "rest the mouse" lines on panels or windows; the hover text stays. - Piano roll: bar numbers, cadence triangles and Magdalena's dots each have a row of their own above the notes, so none covers another. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Qc2Gb9RBL6vFmghUimczFu
The new layout (0.0 to 0.5) and the Cento folder (1.1 to 1.5) passed in Max and Live. 1.6 (both products sharing the files) is not reported yet; next, the freeze test and the rest of sections 2 to 6. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Qc2Gb9RBL6vFmghUimczFu
The pop-up window's button moves from Magdalena's panel to the right end of the row of section names: an 18-px square with an arrow (no room for a word), as high as the names. The piano roll's name stays centred, clear of it. keep now spans Magdalena's panel. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Qc2Gb9RBL6vFmghUimczFu
The left panel gives Magdalena's panel 40 px: PLAY 232 -> 192 px (Max), CLIPS AND VOICES 170 -> 130 px (Live), Magdalena 130 -> 170 px. The Max strip stays 946 px and the Live device 884 px. In Live, "all voices on this track" is now "all voices here" to fit (its parameter keeps its name, All Voices Here). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Qc2Gb9RBL6vFmghUimczFu
Max wraps a comment as wide as its box in the patching view, so the voice-tracks note in the Live panel (160 px there, 118 on show) ran off the panel. Every comment on show is now as wide in the patching view as on show, with presentation_linecount lines. Notes that were too long for their boxes (the more features window, the pop-up window) are shorter, and a test checks that every comment's text fits its box. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Qc2Gb9RBL6vFmghUimczFu
The composing panel's main button says "update composition" (its Live parameter keeps its name, Compose, so mappings still work); the top row makes room for it. The pop-up window's reload seed, which sent the same message, is now an update composition button of its own, in the same blue. The empty piano roll says "Press update composition, then play." A rough test checks that every button's label fits it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Qc2Gb9RBL6vFmghUimczFu
Section 1 has passed in full. The freeze test (2.4) now says why frozen devices remember earlier runs: the memory is in the Cento folder, which every copy of Cento finds, not in the device; and the window button is the square arrow at the top right. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Qc2Gb9RBL6vFmghUimczFu
Frozen cento.brain and cento.voice, in a folder of their own with patchers off the search path, compose, play, open their windows and find the Cento folder (from the patch's folder). Recorded in the M12 checklist, in M0's results (spike d) and in the plan's status. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Qc2Gb9RBL6vFmghUimczFu
The demo set, saved and collected from the frozen devices, opens and plays on its own. Step 3.4 now says to tick Subfolders when putting the patchers entry back, and the app's step 4.3 names every window to try. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Qc2Gb9RBL6vFmghUimczFu
The Max download is now the patch: Cento Patch/ holds cento.maxpat and every patch and script it uses, found by following its references, side by side, so Max finds them with nothing on its search path. Nothing is built in Max and there are no Gatekeeper steps; users need Max 9 (free; no licence needed to run it). - package.js: Cento-for-Max-vX.Y.Z.zip (--only live|max); the app's checks are gone; a missing part or script is reported - tests: the patch's files (each once, none of Live's), the zip's listing, the engine running from the download's folder and finding Documents/Cento, and the read-me agreeing with the zip - read-me (2b: install Max 9, open Cento Patch/cento.maxpat), release guide, M12 checklist (section 4: the patch from its zip), PLAN, README Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Qc2Gb9RBL6vFmghUimczFu
- The read-me is reworked into a guided start: what Cento is, the Cento folder, the Live demo and the Max patch, a quick tour of the device (a screenshot with numbered markers), teaching Magdalena your taste (the large window, marked the same way), choosing chorales (the corpora window), keeping what you make, and reading the piano roll. - The screenshots live in release/images/; npm run package puts them inside the read-me as data: URLs, so the read-me in a zip is one file. A picture the read-me shows that isn't there is reported. - color, favorite, neighbor, license, gray... in the hover text, the read-me and the code; tests check the hover text and the read-me. - The piano roll's hover text says keep, not accept. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Qc2Gb9RBL6vFmghUimczFu
Sections 4 to 6 of the M12 checklist passed on the Mac: Cento for Max from its zip, the two zips, and a newcomer hearing a piece from the read-me alone. The README links to the latest release, and PLAN.md and the README say M12 passed; v0.1.0 is next, from main. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Qc2Gb9RBL6vFmghUimczFu
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Qc2Gb9RBL6vFmghUimczFu
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Finishes M12, "Ship to others (free)". Every check in the M12 checklist passed on the Mac, including the freeze test held over from M0 and a newcomer hearing a piece using only the read-me.
Downloads
cento.brainandcento.voice, the demo set (Cento Demo Project), and the Cento folder with 131 Bach chorales.Cento Patch/holdscento.maxpatand every patch and script it uses, side by side. Max finds them with nothing on its search path. It needs Max 9 but no license. A standalone app waits for later.npm run packagemakes both zips and says what's missing. It finds the patch's files by followingcento.maxpat's references, and embeds the read-me's pictures in the page.Repository layout
patchers/holds only what you open:cento.maxpat,cento.brain.amxdandcento.voice.amxd.patchers/parts/, and the script bundles inpatchers/scripts/.patchersto the search path with Subfolders ticked.GUI redesign
live.textin Live's own look.Read me first
Checks
npm testpasses (247 tests).🤖 Generated with Claude Code
https://claude.ai/code/session_01Qc2Gb9RBL6vFmghUimczFu
Generated by Claude Code