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.

A cartoon person with the right forearm swung in across the body on the beat, and a dog beside it, both dipped slightly at the knees.

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 s

Try this

  1. 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 → -50

  2. Bend 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 · amp 7 → 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

Worked out by the build: it plays the move in the engine on each body and checks what moves on screen. Nobody types this table.
BodyMoves?What moves
2 legs (a person)yeswhole body, arms, legs
4 legs (a dog)yeswhole body, front legs, back legs
no legs (the monster with no legs)yeswhole body, arms

c4c:beh:rap · version 1.0.0 · CC0 (public domain) · by Jabbertoon