Skip to content

Add HobbyScenes plugin: horses, hiking, basketball, soccer - #120

Merged
sshcrack merged 3 commits into
masterfrom
t3/hiking-hills-audio-reactive-scenes
Nov 8, 2026
Merged

sshcrack merged 3 commits into
masterfrom
t3/hiking-hills-audio-reactive-scenes

Conversation

@sshcrack

@sshcrack sshcrack commented Nov 8, 2026 •

Copy link
Copy Markdown
Owner

New HobbyScenes plugin that collects hobby-themed ambient scenes. The category in the UI is "Hobbies".

Scenes

Scene What it shows With music (audio_reactive, on by default)
hike_ridge_trail A hiker walks a ridge path at golden hour, past layers of hills Steps follow the tempo, the sun pulses on beats, flowers glow with the treble, a flock of birds passes on drops
hike_summit_night A hiker sits by a lit tent on a summit above a misty valley with village lights The lantern follows the bass, the aurora follows the mids, drops send shooting stars
hike_cloud_shadows A green hill with a switchback trail, hikers climbing to a cairn, grazing sheep, cloud shadows drifting over Clouds drift faster with the energy, sheep hop on beats
basketball_court Streetball at dusk: dribble, jump shot, swish or rim rattle, fetch the rebound Dribbles land on the beat, floodlights follow the bass, a drop sets the next shot on fire
soccer_pitch A floodlit match seen from above: passing, shots, keeper saves, goals Passes land on beats, a wave runs round the crowd, camera flashes on onsets, drops bring shots on goal
horse_sunset_gallop, horse_misty_herd, horse_pegasus_sky Moved here from t3/horse-scenes-plugin-and-preset (that commit is kept with its authorship); they look the same as before —

Audio reactivity uses a small AudioPulse helper. It fades in when fresh analysis arrives and fades out when it stops, so without the desktop app every scene stays a calm ambient scene. No scene shows text, and the static backgrounds are cached for each canvas size.

Structure

  • scenes/Draw.h: the shared float-canvas rasteriser, split out of the horse code
  • scenes/HorseDraw.h: horse gaits and silhouette
  • scenes/FigureDraw.h: a new side-view human rig (walk cycle, poses) used for the hikers and the basketball player
  • scenes/HobbyScene.{h,cpp}: base class with the speed property, plus AudioHobbyScene with audio_reactive and audio_strength

Verification

  • Emulator build, ctest 47/47 passing (including horse_gait_loop)
  • Rendered every new scene with scripts/render_scene_video.sh using the synthetic audio fixture and checked the frames (videos below)

Videos

basketball_court

basketball_court

▶ basketball_court.mp4 (full video)

hike_cloud_shadows

hike_cloud_shadows

▶ hike_cloud_shadows.mp4 (full video)

hike_ridge_trail

hike_ridge_trail

▶ hike_ridge_trail.mp4 (full video)

hike_summit_night

hike_summit_night

▶ hike_summit_night.mp4 (full video)

soccer_pitch

soccer_pitch

▶ soccer_pitch.mp4 (full video)

- Sunset gallop, misty herd and pegasus sky scenes share a procedural capsule/ellipse horse rasteriser
- Gallop and walk gaits use grounded stance phases plus Hermite swing arcs so limbs stay planted
- Add horse_gait_loop test covering stance continuity, ground clearance and phase-wrap looping
Hobbies as ambient scenes in one plugin. The horse scenes from
t3/horse-scenes-plugin-and-preset move in here; the capsule rasteriser is
split into Draw.h (shared) and HorseDraw.h, and a small side-view human rig
(FigureDraw.h) draws hikers and the basketball player.

New scenes, all calm without music and audio reactive while it plays
(audio_reactive, on by default, fades in/out with fresh analysis):
- hike_ridge_trail: golden-hour ridge walk; steps follow the tempo, sun
  pulses on beats, flowers glow with treble, birds pass on drops
- hike_summit_night: hiker by a lit tent above a misty valley; lantern
  follows the bass, aurora the mids, drops send shooting stars
- hike_cloud_shadows: switchback hill with hikers and sheep; cloud shadows
  drift faster with the energy, sheep hop on beats
- basketball_court: dusk streetball; dribbles land on the beat, jump shots
  swish or rattle out, a drop sets the next shot on fire
- soccer_pitch: floodlit match from above; passes on beats, keeper saves,
  goals ripple the net and flash the stands, a crowd wave runs round

No text anywhere; static backgrounds are cached per size.
@sshcrack

sshcrack commented Nov 8, 2026

Copy link
Copy Markdown
Owner Author

basketball_court

basketball_court

▶ basketball_court.mp4 (full video)

hike_cloud_shadows

hike_cloud_shadows

▶ hike_cloud_shadows.mp4 (full video)

hike_ridge_trail

hike_ridge_trail

▶ hike_ridge_trail.mp4 (full video)

hike_summit_night

hike_summit_night

▶ hike_summit_night.mp4 (full video)

soccer_pitch

soccer_pitch

▶ soccer_pitch.mp4 (full video)

@github-actions

github-actions Bot commented Nov 8, 2026

Copy link
Copy Markdown

Build Artifacts

Platform Download Archive size
desktop-linux-build Download 248 MiB
desktop-windows-build Download 42 MiB
led-matrix-build Download 320 MiB
web-build Download 0 MiB

@sshcrack
sshcrack merged commit 9344a89 into master Nov 8, 2026
11 checks passed
@sshcrack
sshcrack deleted the t3/hiking-hills-audio-reactive-scenes branch November 8, 2026 20:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant