Groove n’ Bloom: CS476A HW#3: Beat Sequencer

Amy Lo
3 min readDec 21, 2023

“Groove n’ Bloom” is a beat sequencer inspired by my love of gardening. Over the last quarter, I have slowly been amassing a small army of plants (now close to 20) in my dorm room by my windowsill. The wonder and peace I experienced just by seeing my plants make little progress, day by day, inspired me to keep going myself.

Simply put, my beat sequencer models the growth cycle of a typical plant. To remove sound from the world is to kill the plant. To grow the plant is to change its sound.

Growth Sequence: empty plot→ seed → sprout → plant → bud → bloom → empty plot

This beat sequencer is divided into three areas: sky, ground, and water. In each area, you can plant a seed at a plot to make a sound that will be triggered by the linearly advancing playhead. However, in order to change the sound at that plot, you must click each time to grow the plant. This action maps onto the repetitive, real-world interaction of having to water your plants.

Controls:

  • Link to code repository. Download files as a ZIP.
  • In the project directory, run chuck go.ck
  • On hover, preview the next version of the plant in the growth sequence at that plot.
  • On click, advance to the next version of the plant in the growth sequence at that plot.

Iteration History

V1: Designing the System

I completely scrapped my previous milestone and used Figma to create a garden with a pixel art / mine aesthetic.

Reference image (Created on Figma)

Using the component set feature, I created different versions of each plot type in my system for active, hover, and none state.

All ground states (none, hover, and active from top to bottom)
All water states (none, hover, and active from top to bottom)
All sky states (none, hover, and active from top to bottom)

V2: Coding it up in ChuGL

I used the reference code as a big inspiration, ultimately setting up multiple classes and the world’s most inefficient state machine ever to set up a cycling click effect for each plant. I also started to refine my system to look more like my reference image.

V3: Adding instrumentation

As seen in my final video, I ended up with a 8-bit like sound. This was done by modifying a ChuGraph with multiple wind instrument types. I had been playing a lot of Zelda this quarter, so the lute-like harmonies were top of mind.

Reflection

Overalll, I’m proud of my work on this beat sequencer. I initially was quite lost, but ended up learning a lot about class design in ChucK and now feel really confident handling mouseover events. While my health prevented me from finishing this project during the quarter, I’m glad to finally get it done — it ended up looking exactly like the vision I mapped out in my head. There are a few refinements I would add if I kept working on this (toggle on/off tracks, play/pause). However, I accomplished my goal of making my own musical garden (and my sister ended up making music on it while I was off my laptop).

Credits:

  • Wild plant pixel art from Pop Shop Packs
  • Shoutout to Diego who gave me the original idea of making my beat sequencer “grow” like a farm.
  • Special thanks to Raghav for much needed moral support as I finished this project. Sometimes, you just need a good friend.

--

--

Amy Lo
0 Followers

Designer, builder, thinker. Stanford CS & Psychology.