Skip to content


Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Gamified music & tech teaching tool

An educational platform for engaging 14–140 year-olds with music, technology, and game design. The focus is on providing entertaining challenges inexpensively, that promote creative problem solving, collaborative work, and programming using visual apparatus.

live demo

printable board & tiles download

how it works

step 1: place tiles

step 2: take photo

step 3: simulation



  1. cd to webserver directory
  2. copy/rename the file to
  3. create virtual environment: python -m venv env
  4. activate virtual environment: source env/bin/activate
  5. install packages: pip install -r requirements.txt
  6. set environment variables: export
  7. for flask debug mode: export FLASK_DEBUG=1
  8. run the server: flask run
  9. open website in browser: http://localhost:5000

On subsequent runs, leave out steps 2, 3, 5.



  • opencv detect tile grid coordinates
  • flask to return tile coordinates
  • place tiles (after above step)
  • re-snap option if invalid json data
  • run mp3 samples on tone.js player
  • preload tone.js samples
  • universal config (for js, python, etc. from a single file)
  • generate session id using python?
  • monitor interface (to observe what the user sees on their phone on another screen)
  • add matomo config to
  • add pulse collision rule(s)
  • run button to become reset/rerun button once clicked
  • test <input ...capture=camera" />
  • collision symbol/indication?
  • different sound per colour (i.e. red pulse plays a different hihat than a green pulse)
  • random tile that gives an event a 50% chance of occurring (must be used with another half-tile)


  • cache audio (service worker?)
  • markerless grid (and tile) detection?
  • orientable (horizontal/vertical) tiles?
  • panel for uploading/configuring own instruments


  • aruco code detection too senstive to light conditions and poor photos
  • pulses moving north survive collisions
  • match the board colour with the print?
  • disregard tiles outside of the grid
  • (TEST) simultaneous sessions (server prefixes images names?)
  • use rear camera on tablets


  • what happens if we put two kick drums next to each other? ('accent' and have it louder?)
  • what happens if we put two different arrows next to each other?

Created by (alphabetically by firstname) Andre Mūrnieks, Jon He, Radek Rudnicki, Tristan Bunn.