## 1. Your prompt, rewritten

> "Animate my attached bot (a white sphere with two slanted black capsule eyes) using as many FX (effects) techniques as possible. Draw from early gaming through modern real-time 3D, film, video and painting. Think like an animator, director, game developer and fine artist. First give me the full catalog, ordered by sequence. Then build one bot at a time as a live, interactive demo. Keep the character consistent across all demos. Pause after each one. Flag any technique that needs an external API before you use it."
## 2. What option 38 shows

- **The demo track is generated live, not a recording.** Synthesised drums, bass and melody at 112 BPM loop through four chords, built from oscillators and noise.
- **Every frame, the sound is split and measured:**

| Signal | Measured as | Bot reaction |
|---|---|---|
| Beat | Sudden bass jump above its recent average | Hop, squash on landing, lean left/right alternately, cyan flash |
| Bass | 40–160 Hz energy | Body swells slightly, background warms |
| Mids | 160 Hz–2 kHz | Dance lean grows |
| Highs | 2–9 kHz | Sparkles shoot off the rim |
| Loudness | Overall wave level | Eyes widen when loud |
| Pitch | Strongest frequency | Eyes shift up for higher notes |
| Silence (3 s+) | Very low level | Half-closed eyes, floating "z z" |

- **Beat detection estimates tempo.** The gaps between detected beats give a live BPM (beats per minute) readout.
- **Spectrum ring:** 64 bars around the bot, low notes at the top running clockwise to highs, in a blue-to-violet sweep.

## 3. Experiments

1. **Play, then drag Sensitivity down to 0.5.** Only strong kicks trigger hops. At 3.0 it reacts to hi-hats too and becomes hyperactive. Sensitivity sets the bot's personality.
2. **Stop the track and wait 3 seconds.** The bot dozes off. Silence is a state, not just "nothing."
3. **Try "Use microphone."** If the page allows it, talk, clap or play music. Claps make beats; whistling moves the eyes. If it's blocked, a message says so. One known quirk: if the mic *does* work, the demo track may play silently afterwards; reopen the widget to reset.

## 4. Less obvious details

- **Beats are relative, not absolute.** The detector compares bass to its own average over the last ~0.7 seconds, so it works for quiet and loud music alike, and ignores steady drones.
- **A 0.25-second cooldown after each beat** stops one kick from counting twice. It also caps detection at about 240 BPM.
- **The kick is a falling sine wave.** Pitch drops from 130 to 42 Hz in a split second. That's how most electronic kick drums are made.
- **Reactions are smoothed differently.** Eyes ease in over a fraction of a second; beats hit instantly. Mixing sharp and smooth responses keeps it from looking twitchy.

## Examples

**Analysis pipeline**
```
source (synth or mic) ──► analyser (1024-point FFT, ~60×/s)
    ├─ bands: bass | mid | high  ──► body, lean, sparkles
    ├─ waveform RMS              ──► eye widening / sleep
    ├─ peak bin                  ──► eye height (pitch)
    └─ bass vs rolling average   ──► BEAT ──► hop + lean flip + BPM
```

**Beat rule**
```
if bass > average(last 0.7 s) × 1.3 + 0.04
   and time since last beat > 0.25 s
   and bass > 0.15
→ beat (strength = how far above average)
```

**Demo track grid (one bar, 16 sixteenths)**
```
kick   X . . . X . . . X . X . X . . .
snare  . . . . X . . . . . . . X . . .
hat    x x x x x x x x x x x x x x O x
bass   o . o . o . o . o . o . o . o .
```

G. Generative / procedural

#38 Audio-reactive

Share: /e/grokbot-animation/38/