Monorepo for Aesthetic.Computer aesthetic.computer
4
fork

Configure Feed

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

notepat-remote: piano palette — ivory / black / colored chrome

White-key pads sit on an ivory rest tone (piano-cream) instead of a
muted-rainbow tint, so the resting grid reads as a keyboard rather
than a desaturated color field. Black keys stay on PAD_SHARP. Rainbow
note color still emerges on press and during the post-release flash,
blending from the rest tone so the effect tracks each pad's idle.

Divider + 2px device bezel share a single chrome color that picks up
the Live track color when pushed (falls back to a warm muted rose) —
the gray was reading too neutral against the piano tones.

+19 -13
+19 -13
system/public/aesthetic.computer/disks/notepat-remote.mjs
··· 415 415 const BAR_BG = [35, 20, 30]; 416 416 const BAR_BORDER = [55, 35, 45]; 417 417 const PAD_SHARP = [18, 18, 20]; // black-key rest fill 418 + const IVORY = [240, 232, 215]; // white-key rest fill (piano-ivory) 418 419 const BG_IDLE = [4, 2, 6]; // near-black when nothing playing 419 420 420 421 // Focused theme — notepat palette, rainbow accent per note. ··· 559 560 fill = baseColor; 560 561 } 561 562 } else if (recentFlash && focused) { 562 - // Note color blended in at recent-flash intensity. 563 + // Recent-flash: blend the rest tone (ivory/PAD_SHARP) toward 564 + // the note color. Fades out over 18 frames. 565 + const restTone = black ? PAD_SHARP : IVORY; 563 566 const f = 1 - sinceNote / 18; 564 567 fill = [ 565 - floor(bgBase[0] + (baseColor[0] - bgBase[0]) * (0.35 + f * 0.5)), 566 - floor(bgBase[1] + (baseColor[1] - bgBase[1]) * (0.35 + f * 0.5)), 567 - floor(bgBase[2] + (baseColor[2] - bgBase[2]) * (0.35 + f * 0.5)), 568 + floor(restTone[0] + (baseColor[0] - restTone[0]) * (0.35 + f * 0.5)), 569 + floor(restTone[1] + (baseColor[1] - restTone[1]) * (0.35 + f * 0.5)), 570 + floor(restTone[2] + (baseColor[2] - restTone[2]) * (0.35 + f * 0.5)), 568 571 ]; 569 572 } else if (focused) { 570 - // Resting state: muted version of note color so the rainbow is 571 - // still readable without overwhelming the unpressed pads. 572 - fill = [ 573 - floor(bgBase[0] + (baseColor[0] - bgBase[0]) * 0.35), 574 - floor(bgBase[1] + (baseColor[1] - bgBase[1]) * 0.35), 575 - floor(bgBase[2] + (baseColor[2] - bgBase[2]) * 0.35), 576 - ]; 573 + // Resting state: piano-key look — ivory whites, near-black 574 + // sharps. The rainbow only comes out when a note is active. 575 + fill = black ? PAD_SHARP : IVORY; 577 576 } else { 578 577 fill = black ? keyBlack : unfocusedKeyWhite; 579 578 } ··· 646 645 } 647 646 } 648 647 649 - // ── Octave divider: 2px gray horizontal bar between blocks ─────── 648 + // ── Octave divider + device bezel ─────────────────────────────── 649 + // Both pick up the Live track color when Max has pushed it, so the 650 + // non-pad chrome responds to the hosting track. Fallback is a warm 651 + // muted rose rather than a stark gray. 650 652 if (focused) { 653 + const chrome = liveTrackColor || [150, 80, 110]; 651 654 const barY = rowEdges[3] - octaveGap; 652 - ink(100, 100, 110).box(0, barY, W, octaveGap, "fill"); 655 + ink(...chrome).box(0, barY, W, octaveGap, "fill"); 656 + for (let i = 0; i < 2; i += 1) { 657 + ink(...chrome).box(i, i, W - i * 2, H - i * 2, "outline"); 658 + } 653 659 } 654 660 655 661 // ── Unfocused overlay: big red X spanning the device ─────────────────
system/public/m4l/notepat.com.amxd

This is a binary file and will not be displayed.