NoteBlocks - Make Beats With Blocks!
by alatorre in Circuits > Speakers
17 Views, 0 Favorites, 0 Comments
NoteBlocks - Make Beats With Blocks!
As some of you might know (if you look at my other Instructables :)), I’ve always loved creating things that merge design, technology, and play. After finishing my first degree in Mechanical Engineering, I transitioned into starting a second bachelors degree in Artificial Intelligence.
Lately, I've been thinking of mixing my product design and mech. engineering skills with skills in AI like computer vision, and so when I saw this contest I thought it was the perfect opportunity.
I started by asking the question:
What if you could compose music physically?
What I came up with is NoteBlocks!
NoteBlocks is a playful, tangible music sequencer that lets you build beats with physical blocks. Each 3D-printed tile carries an Aruco marker that represents a sound (kick, snare, hat, bass, etc.). You arrange eight tiles on a 1×8 rail, scan them with your iPhone or laptop camera, and the web app reads the pattern to instantly play your loop, no electronics, no cables.
This project is my entry for the “Make Some Noise” contest, and it’s all about sound, computer vision, and interaction design.
Inspiration
I'd had some experience creating beats using FL Studio in the past, so knew more or less what making a beat entails. I explored existing musical interfaces: MIDI controllers, sequencers, and toys that generate sound. Most were either purely electronic, or too abstract for a casual player.
I wanted something more tangible, something that feels toy-like, but that also explores AI concepts like computer vision and symbolic mapping.
The idea: a physical board where each block represents a sound.
You build your pattern, scan it with your phone, and the music starts playing.
Designing the Parts
First and foremost, all the parts must be designed. We decided to use Fusion360 as the selected software. Fusion360 works great for this project, as it allows not only for the actual product design aspects, but also renders and animations.
Additionally, part of the challenge of this project is to design all the parts knowing that the manufacturing technology that will be mostly used is 3D printing. This is known as DfAM (Design for Additive Manufacturing). It is important think of the limitations that 3D printing has and design around them.
Taken from the gen3D website: "Design for Additive Manufacturing is the practice of designing a part or product that exploits the freedoms of additive manufacturing whilst adhering to the process limitations. The aim for all designers should be to minimise the production time, cost and risk of in-build failure, whilst maximising the functionality and quality of the components. We deliver our training and consultancy based on 4 key principles of design for additive manufacturing. An understanding of these principles will allow designers to create new designs that fully exploit the benefits of additive manufacturing and give the part the best opportunity of being a commercial success."
Marker System
NoteBlocks uses Aruco markers (a form of binary fiducial markers similar to QR codes).
Each marker ID represents a different sound. Since I only wanted to focus on percussion sounds, I decided to generate 5 markers:
ID0 = Empty
ID1 = Kick
ID2 = Snare
ID3 = HiHat
ID4 = Bass
To do this, I wrote a code that uses the cv2 library built in Aruco library. The code is attached.
After running it, I printed used the SVGs when designing the blocks and base.
Downloads
3D Modelling
Designing the parts was relatively simple.
The system consists of two elements:
- A 1×8 rail, with eight slots of 30×30 mm.
- A set of tiles that fit neatly into each slot.
Each tile carries an Aruco marker (a small black-and-white square code) that the camera can detect and interpret.
The dimensions were chosen to be compact but easy to detect with a phone camera:
- Marker size: ~25 mm
- Tile spacing: 32 mm
- Rail length: ~280 mm
Printing
Before anything can make sound, you need to bring NoteBlock sinto the physical world.
The system consists of two main printed parts:
- The Base Rail — where you place your sound blocks.
- The Sound Blocks — each carrying a printed ArUco marker on top.
Recommended Print Settings
- Material: PLA
- Layer Height: 0.2 mm
- Infill: 20% is plenty
- Supports: None
- Nozzle: 0.4 mm standard
- Print Time: ~5 hours total for full setup
I print with a BambuLab printer using the AMS, so I use BambuStudio to add the different colours (I use white and black).
Prints!
Coding the Web App
The backbone of the app is OpenCV — specifically, its built-in ArUco marker detection module. Each block on your NoteBlock platform has one of these unique markers printed or engraved on it, so when the camera looks at your setup, it can tell exactly which marker (and therefore which sound) is sitting in each slot.
When the camera detects all eight slots, it takes that sequence of detected IDs, sorts them, and starts looping through them, triggering the appropriate sound for each one.
Every beat lasts about 0.3 seconds, so the full loop plays back roughly every 2.4 seconds (8 × 0.3).
Let me break down the important parts:
- Marker detection
OpenCV looks for square patterns that match the ArUco dictionary (DICT_4X4_50). It’s like scanning a QR code, but way faster and more robust.
- Sorting and stability
It waits until all 8 slots are detected consistently to make sure your beat is stable before playing.
- Loop thread
Once a stable configuration is found, it starts a background thread that loops through the detected sequence indefinitely, playing each corresponding sound.
- Sound playback
On macOS, I used afplay since it supports .m4a natively. You can replace this with playsound or pygame if you’re on Windows.
- Threading
Each sound is played on a separate thread so they don’t block each other, giving you smoother playback and less delay.
Downloads
Testing the System
To run it, view the detect.py code on VSCode. You want to run these commands first in terminal:
pip install opencv-python
pip install opencv-contrib-python
And then run the code. You should see something like the attached video!
Sample Sounds
For example, here's an example beat I made using the system for a reggaeton song. This is the pattern I used:
Kick - Silence - Snare - Kick - Snare - Silence - Kick - Silence
Downloads
Conclusions
NoteBlocks is a small project, but it represents what I love doing: combining technology, design, and play.
It’s a musical toy, a coding experiment, and a design study all in one.
Most importantly, it’s fun, as every time you scan the blocks, the result feels alive.
I hope this project sparks ideas for new ways to interact with sound.
Maybe someone takes it further, maybe you’ll build the next version!