[object Object]

← back to Dead Agentabrams

Sync ROOM 01: colorful dancing-bear troupe synced to music

c315f1a237b0c2507698242e6513d01fa5e7840e · 2026-09-01 22:02:42 -0700 · Steve Abrams

Files touched

Diff

commit c315f1a237b0c2507698242e6513d01fa5e7840e
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Tue Sep 1 22:02:42 2026 -0700

    Sync ROOM 01: colorful dancing-bear troupe synced to music
---
 room/index.html | 29 +++++++++++++++--------------
 1 file changed, 15 insertions(+), 14 deletions(-)

diff --git a/room/index.html b/room/index.html
index 479325f..54fb9a7 100644
--- a/room/index.html
+++ b/room/index.html
@@ -886,13 +886,13 @@ function bearAndFireflies(x,y,s,t,accent){
 
 // two bear cubs dancing beside the conductor — bob + rock, bouncing harder on the beat when reactive
 // articulated "puppet-style" dancing bear — jointed limbs swing, hips sway, head bobs; bigger on the beat
-function bearCub(x,y,s,t,ph){
+function bearCub(x,y,s,t,ph,FUR){
   const beat=(S.pulse||0), amp=(S.amp||0), e=1+beat*0.9+amp*0.5;
-  const sway=Math.sin(t*2.3+ph)*0.14*e;                 // hip sway
-  const bob=Math.abs(Math.sin(t*4.6+ph))*(2+beat*3+amp*2);  // small grounded bob
-  const step=Math.sin(t*2.3+ph);                        // alternating legs
-  const arm=Math.sin(t*2.3+ph+0.4);                     // waving arms
-  const FUR='rgba(84,40,38,0.98)';
+  const sway=Math.sin(t*2.6+ph)*0.22*e;                 // lively hip sway
+  const bob=Math.abs(Math.sin(t*5.2+ph))*(2.5+amp*2.5) + beat*12;  // dances free-running, HOPS on each beat when reacting
+  const step=Math.sin(t*2.6+ph);                        // alternating dance steps
+  const armL=Math.sin(t*3.4+ph), armR=Math.sin(t*3.4+ph+Math.PI);  // hands wave overhead, alternating
+  FUR = FUR || 'rgba(84,40,38,0.98)';
   ctx.save(); ctx.translate(x,y-bob); ctx.scale(s*1.2,s*1.2); ctx.rotate(sway);
   function limb(px,py,ang,len,w,foot){                  // a jointed, outlined limb
     ctx.save(); ctx.translate(px,py); ctx.rotate(ang); ctx.lineCap='round';
@@ -901,12 +901,12 @@ function bearCub(x,y,s,t,ph){
     if(foot){ cut(FUR,1.8); ctx.beginPath(); ctx.ellipse(0,len,3.2,2,0,0,7); fillOutline(); }
     ctx.restore();
   }
-  limb(-3.5,-3, 0.15+step*0.45, 12, 6.5, true);         // legs (behind body)
-  limb(3.5,-3, 0.15-step*0.45, 12, 6.5, true);
+  limb(-3.5,-3, 0.12+step*0.55, 12, 6.5, true);         // legs — alternating dance steps
+  limb(3.5,-3, 0.12-step*0.55, 12, 6.5, true);
   cut(FUR,2.6); ctx.beginPath(); ctx.ellipse(0,-12,8.5,11,0,0,7); fillOutline();   // body
-  ctx.fillStyle='rgba(122,68,58,0.9)'; ctx.beginPath(); ctx.ellipse(0,-10,4.5,6,0,0,7); ctx.fill(); // belly
-  limb(-7,-18, -0.7+arm*0.55, 11, 5, true);             // arms raised, waving
-  limb(7,-18, 0.7-arm*0.55, 11, 5, true);
+  ctx.fillStyle='rgba(255,255,255,0.22)'; ctx.beginPath(); ctx.ellipse(0,-10,4.5,6,0,0,7); ctx.fill(); // belly highlight
+  limb(-7,-18, 2.3+armL*0.45+beat*0.35, 11, 5, true);   // arms raised overhead, waving + thrust up on the beat
+  limb(7,-18, -2.3+armR*0.45-beat*0.35, 11, 5, true);
   cut(FUR,2.4); ctx.beginPath(); ctx.arc(0,-30,7,0,7); fillOutline();              // head
   ctx.beginPath(); ctx.arc(-6,-36,3,0,7); fillOutline();                          // ears
   ctx.beginPath(); ctx.arc(6,-36,3,0,7); fillOutline();
@@ -914,9 +914,10 @@ function bearCub(x,y,s,t,ph){
   ctx.fillStyle=OUTLINE; ctx.beginPath(); ctx.arc(0,-29,1.1,0,7); ctx.fill();      // nose
   ctx.restore();
 }
-function drawBearCubs(bx,by,t,scaleA){
-  bearCub(bx-60, by, 1.0*scaleA, t, 0.0);
-  bearCub(bx+54, by, 0.95*scaleA, t, 1.7);
+function drawBearCubs(bx,by,t,scaleA){   // a colorful dancing-bear troupe (our own design, not the GD trademark)
+  bearCub(bx-70, by, 1.00*scaleA, t, 0.0, 'rgba(206,66,116,0.98)');   // rose
+  bearCub(bx+50, by, 0.96*scaleA, t, 1.6, 'rgba(232,160,52,0.98)');   // gold
+  bearCub(bx+104,by, 0.90*scaleA, t, 3.1, 'rgba(72,172,150,0.98)');   // teal
 }
 
 // shoreline songbirds that "sing" the music — note-bubbles pop on the beat (♪♫♬, never lyrics)

← 5f6518a Sync ROOM 01: articulated dancing bears  ·  back to Dead Agentabrams  ·  Sync ROOM 01: Dancing Bears count slider (1-10) 292a3a6 →