Groove
A grounded dance on a steady beat: the knees give, the body shifts from side to side, and the arms take turns swinging in.

Use it in a cartoonOpen it in the block editorThe pack file (JSON)
What it is for
Groove is for music: a character dancing at a party, nodding along to a song, or rapping a few lines. Its timing is fixed to a beat of 96 per minute, a relaxed hip-hop or pop tempo, so it lines up with music at that speed. It does not listen to the voice, so it can also run under a line that is spoken rather than sung, keeping the character moving to its own rhythm.
The principle it shows: timing
Everything in Groove is counted in beats. At 96 beats per minute one beat lasts 0.625 seconds, and the program uses exactly that number: the arms change on every beat, and the knees, the bounce and the squash repeat every two beats, 1.25 seconds. When every part of a movement is locked to one beat, the eye reads it as dancing, even with very small motions.
The program, line by line
when it starts
abssin wave on left shin + right shin · every 1.25 s · amp 7
abssin wave on dy · every 1.25 s · amp 4
abssin wave on sx · every 1.25 s · amp 0.02
abssin wave on sy · every 1.25 s · amp -0.02
forever:
set dx 6, rot 1.5, right arm -22, left arm 6
wait 0.625 s
set dx -6, rot -1.5, left arm 22, right arm -6
wait 0.625 swhen it starts— begins when the move is put on a character.abssin wave on left shin + right shin · every 1.25 s · amp 7— both knees bend up to 7 degrees, a one-way wave, so they dip on every beat (the wave repeats twice in its 1.25 seconds).abssin wave on dy · every 1.25 s · amp 4— the body dips 4 pixels on every beat, in time with the knees (positive is down).abssin wave on sx · every 1.25 s · amp 0.02andabssin wave on sy · every 1.25 s · amp -0.02— on each dip the body gets 2% wider and 2% shorter: a little squash on the beat.forever:— then, over and over:set dx 6, rot 1.5, right arm -22, left arm 6,wait 0.625 s,set dx -6, rot -1.5, left arm 22, right arm -6,wait 0.625 s. On one beat the body shifts 6 pixels one way, leans 1.5 degrees and the right arm swings in across the body; on the next it shifts back, leans the other way and the left arm takes the turn. Thesetblocks change the pose instantly, so the hits land sharply on the beat.
Try this
Swing the right arm 50 degrees in instead of 22 on its beat. That gesture becomes a big sweep across the chest, more show than groove.
In the program:
set · to.part:arm:1-22→-50Bend the knees 20 degrees instead of 7 on each bar. The groove gets lower and bouncier, like a dancer really getting into it.
In the program:
wave · amp7→20
How it differs from Talk and Annoyed
Talk gestures with both arms at once, as much as the voice is loud. Groove gestures with one arm at a time, always on the beat. Annoyed also bobs and shifts, but its waves are deliberately out of step, which is why it looks impatient rather than musical.
Works on
| Body | Moves? | What moves |
|---|---|---|
| 2 legs (a person) | yes | whole body, arms, legs |
| 4 legs (a dog) | yes | whole body, front legs, back legs |
| no legs (the monster with no legs) | yes | whole body, arms |