Monorepo for Aesthetic.Computer aesthetic.computer
4
fork

Configure Feed

Select the types of activity you want to include in your feed.

notepat-remote: half-width + rename to notepat.com

M4L device shrinks from 360→180 px so it takes up less rack real
estate; 8 pads still fit at ~22 px wide. Rename the device (and the
shipped amxd) to notepat.com — drops the AC prefix and offline suffix
and lines up with the notepat.mjs branding. Piece header + download
link in notepat.mjs updated to match. Per-pad keyboard-key hint
removed — it's redundant once pads get this narrow.

+12 -17
+7 -4
oven/bundler.mjs
··· 916 916 // system/public/m4l/notepat-remote.amxd so the offline bundle behaves 917 917 // identically to the live version. 918 918 function generateNotepatM4DPatcher(pieceName, dataUri) { 919 - const W = 360, H = 169; 919 + const W = 180, H = 169; 920 920 return { 921 921 patcher: { 922 922 fileversion: 1, ··· 1066 1066 // octave, focus, ping from the daw bridge) pass through the final outlet to 1067 1067 // the MIDI router. Everything else matches the hand-rolled notepat device. 1068 1068 function generateChunkedNotepatM4DPatcher(pieceName, bootstrapDataUri, chunks) { 1069 - const W = 360, H = 169; 1069 + const W = 180, H = 169; 1070 1070 const liveUrl = "https://aesthetic.computer/" + pieceName + "?daw=1&nogap=1&density=1"; 1071 1071 const boxes = [ 1072 1072 { box: { disablefind: 0, id: "obj-jweb", latency: 0, maxclass: "jweb~", numinlets: 1, numoutlets: 3, outlettype: ["signal","signal",""], patching_rect: [10,10,W,H], presentation: 1, presentation_rect: [0,0,W,H], rendermode: 1, url: bootstrapDataUri } }, ··· 1146 1146 // `chunked: true` routes through the chunked bootstrap pipeline, required 1147 1147 // whenever the bundle exceeds Max's ~32 KB attribute/message text cap. 1148 1148 const DAW_PIECE_PROFILES = { 1149 - "notepat-remote": { profile: "notepat", kind: "midi_effect", chunked: true }, 1149 + "notepat-remote": { profile: "notepat", kind: "midi_effect", chunked: true, displayName: "notepat.com" }, 1150 1150 }; 1151 1151 1152 1152 export async function createM4DBundle(pieceName, isJSPiece, onProgress = () => {}, density = null) { ··· 1187 1187 onProgress({ stage: "compress", message: "Packing .amxd binary..." }); 1188 1188 1189 1189 const binary = packAMXD(patcher, amxdKind); 1190 - const filename = `AC ${pieceName} (offline).amxd`; 1190 + const displayName = profileSpec.displayName || pieceName; 1191 + const filename = profileSpec.displayName 1192 + ? `${displayName}.amxd` 1193 + : `AC ${pieceName} (offline).amxd`; 1191 1194 1192 1195 return { binary, filename, sizeKB: Math.round(binary.length / 1024) }; 1193 1196 }
+4 -12
system/public/aesthetic.computer/disks/notepat-remote.mjs
··· 433 433 434 434 // ── Header row: piece name + transport state ───────────────────────── 435 435 let y = 2; 436 - ink(...fg).write("notepat-remote", { x: 4, y }); 436 + ink(...fg).write("notepat.com", { x: 4, y }); 437 437 // Transport indicator mirrors arena.mjs: UDP (green) > WS (yellow) > 438 438 // OFFLINE (red). UDP means net.udp is live (session geckos channel up); 439 439 // WS means the raw notepat:midi subscription socket is open. ··· 570 570 const labelX = px + floor((pw - labelW) / 2); 571 571 const labelY = py + floor((ph - charH) / 2); 572 572 // Black keys stay dark when held (fill ≈ graphite), so dark label 573 - // text disappears. Keep the light label/hint for black keys even 574 - // in the held state; only white keys (bright rainbow fill) flip 575 - // to dark text on press. 573 + // text disappears. Keep the light label for black keys even in 574 + // the held state; only white keys (bright rainbow fill) flip to 575 + // dark text on press. 576 576 const labelColor = 577 577 held && focused && !black ? [10, 10, 14] : 578 578 black ? [220, 225, 235] : [20, 22, 28]; 579 579 ink(...labelColor).write(label, { x: labelX, y: labelY }); 580 - // Keyboard key hint, inset from the bottom-right corner. 581 - const hintInset = 2; 582 - const hintX = px + pw - charW - hintInset; 583 - const hintY = py + ph - charH - hintInset + 1; 584 - const hintColor = 585 - held && focused && !black ? [10, 10, 14, 200] : 586 - black ? [180, 180, 190, 180] : [40, 44, 52, 180]; 587 - ink(...hintColor).write(key.toUpperCase(), { x: hintX, y: hintY }); 588 580 } 589 581 } 590 582 }
+1 -1
system/public/aesthetic.computer/disks/notepat.mjs
··· 7124 7124 down: () => api.beep(400), 7125 7125 push: () => { 7126 7126 api.beep(); 7127 - jump("out:https://aesthetic.computer/m4l/notepat-remote.amxd"); 7127 + jump("out:https://aesthetic.computer/m4l/notepat.com.amxd"); 7128 7128 }, 7129 7129 }); 7130 7130
system/public/m4l/notepat-remote.amxd

This is a binary file and will not be displayed.

system/public/m4l/notepat.com.amxd

This is a binary file and will not be displayed.