Ideas — Oslo Mobile Orchestra
Backlog of apps, features, and workshop concepts. Same stack as today: vanilla JS, Web Audio, static GitHub Pages, phones only.
New instruments — mobile sensing
Phones expose more than mic + tilt. Each row is a candidate app (or major upgrade) pairing a sensor with a clear musical gesture.
Idea
Sensor / API
Music role
Synthesis hook
Kaoss Pad
X–Y pad + loop clock
Quantized lead / beat loops (Kaossilator-style)
Kaoss Pad
Idea
Sensor / API
Music role
Synthesis hook
Gyro Whirl
rotationRate (αβγ)
Spin phone → vibrato speed & stereo wobble
Spin Chorus
Shake Filter
High-pass jerk on accel
Sudden shakes open a filter
Jerk Wah
Flat / Edge
beta / gamma thresholds
Only sound when held flat vs upright
Table Drone
Compass Choir
webkitCompassHeading / alpha
Section pans by where you face in room
Heading Choir
Idea
Sensor / API
Music role
Synthesis hook
Room Reverb Send
Mic RMS + optional loopback
Loudness in room → wet/dry
Room Wash
Clap Architect
Onset times from mic
Clap spacing builds a rhythm grid
Clap Grid
Idea
Sensor / API
Music role
Synthesis hook
Light Theremin
AmbientLightSensor
Cover sensor → darker tone
light-theremin
Shadow Sequencer
Front camera brightness map
Hand shadow → 8-step mask
Shadow Steps
Color Band
Camera dominant hue
Point at coloured objects → scale
Hue Scale
Motion Grid
Camera frame diff (like Video Sonifier)
Movement amount → rhythm density
Grain Cam
Idea
Sensor / API
Music role
Synthesis hook
Pinch Bass
Two-finger pinch scale
Pinch → filter + sub level
Pinch Sub
Pressure Pad
force on PointerEvent (iOS)
Hard press → louder + brighter
Force Bright
Edge Strum
Pointer down at pad edge vs centre
Edge = harmonics, centre = fundamental
Rim Pluck
Haptic Click
navigator.vibrate patterns
Android: feel the rhythm you programmed
Vibe Lane
Battery Drone
navigator.getBattery()
Low battery → thinner, detuned ensemble
Power Thin
Location & environment (experimental / fragile APIs)
Idea
Sensor / API
Music role
Synthesis hook
Geo Drone
geolocation speed / heading
Walk around space → slow panorama
Walk Pan
Already explored (reference)
New instruments — synthesis
Different ways to generate sound beyond what the hub already demos. Pair with touch or a sensor for performance.
Idea
Approach
Music role
Control idea
Hard Sync Lead
Oscillator hard sync
Aggressive lead
Sync Scream
Ring Mod Gong
Ring mod (two sines)
Metallic inharmonic
ring-mod-gong
AM Radio
Amplitude modulation
Old-radio sidebands
AM Dial
Phase Distortion
Casio-style PD curve
Digital 80s lead
PD Lead
SuperSaw Stack
Detuned saw cluster
Ensemble pad
Blade Chorus
Pulse Width Bass
Variable rectangle
Nasty bass
Pulse Bass
Idea
Approach
Music role
Control idea
Bowed Waveguide
Continuous excitation + loop
Cello-like (simpler than Bow Phone)
Drag Bow
Pluck Bowl
2D wave mesh (lite)
Splashy percussion
Bowl Splash
Wind Bottle
Noise + resonant peak + feedback
Breath without mic
Bottle Breath
Idea
Approach
Music role
Control idea
Spectral Freeze
Hold current FFT frame
Cloud pad
spectral-freeze
Grain Rain
Random grain positions
Texture
Shake Dust
Scrub Tape
Play buffer forward/back
DJ scrub
Tape Scrub
Vocoder Choir
Mic → band vocoder
Robot choir
Robot Hall
Idea
Approach
Music role
Control idea
IR Cathedral
Convolve tone with uploaded IR
Space without reverb unit
Space Convolve
Live Loop Slicer
Record bar; jump slices
Breakbeat
Slice Bar
Idea
Approach
Music role
Control idea
Markov Melody
Learn 2nd-order from taps
Chain Melody
Touch · keyboard
Euclidean Rings
Euclidean rhythms on circles
Euclidean Pulse
Touch
L-System Groove
Rewrite rules → drum map
Fractal Lane
Touch
Chaos Attractor
Lorenz / logistic → params
Strange Attractor
Touch · motion
Idea
Approach
Music role
Control idea
Shepard Glide
Continuous Shepard tone
Endless Rise
Touch · tilt
Already on hub (reference)
See CATALOG.md for all 56 hub apps (Rhythm 10 · Drones 11 · Melody 8 · Synthesis 12 · Texture 11 · AI 4).
Recent additions include Kaoss Pad (X–Y loop synth), centre-record UX on Sampler and Scrub Tape , and continuous Shepard Glide .
Retired from the hub (folders may remain for redirects): Part, Pocket Metronome, Pitch Hive, One Shot Orchestra, Synth Pad, Tilt Doppler, Torch Pulse, Whisper Gate, and others — see git history.
Sensor × synthesis matrix (workshop prompts)
Use when designing a new app: pick one primary sensor and one synthesis family not yet paired on the hub.
Subtractive
FM
KS / waveguide
Granular
Additive
Sample
Gyro only
open
Gyro Whirl
open
Grain Rain
open
open
Ambient light
Light Theremin
open
open
open
open
open
Magnetometer
open
open
open
open
Compass Choir
open
Barometer
open
open
Wind Bottle
open
open
open
Pinch / force
open
open
Edge Strum
open
open
open
Camera hue
open
open
open
Motion Grid
Color Band
open
Vocoder
—
—
—
—
—
Vocoder Choir
New instruments (apps) — quick list (legacy table)
Just Equal (was Drone Choir) — hold-to-sustain; cents ruler on pad
Motion Trump — continuous mode toggle
Train & Shake — sway + export/import
Conductor — QR + visual metronome flash
Synth Pad — aftertouch
Granular Tilt — hold freeze buffer; upload sample
Harmonizer — auto major/minor; scale lock + lock root
Firefly — full-screen visual flash (stronger on downbeats)
KS String / Pluck — optional reverb send per pluck
Idea
Why
Status
WebRTC room
Tighter beat than URL start time
Not started (needs server)
WebSocket hub
Global grid step broadcast
Not started
Listen & lock
Mic phase correction
Partial (Firefly, Harmonizer)
Section colors
?section= on hub
Shipped
Room reverb send
Laptop reverb bus
Not started (multi-device bus)
Bluetooth clock
Wired sync for pro workshops
Research
AI & education (showcase)
Teachable panel, confusion matrix, k slider, ethics, k-NN vs tiny net — Train & Shake
Hum vs clap classifier — hum-clap
Genetic drum patterns — Evo Drumkit
Gesture → synthesis params — Tilt Learn (k-NN tilt → filter)
On-device style transfer — “play like shake” swaps FM ratios (advanced)
Sensors — API cheat sheet
Sensor
Web API
iOS Safari
Android Chrome
Notes
Acceleration
devicemotion / Accelerometer
Permission
Often OK
Linear vs gravity split
Rotation rate
rotationRate
Permission
Often OK
Good for vibrato
Orientation
deviceorientation
Permission
Mixed
Compass heading iOS
Mic
getUserMedia
Prompt
Prompt
Core to many apps
Camera
getUserMedia
Prompt
Prompt
Light cost
Ambient light
AmbientLightSensor
Limited
Often yes
Fallback: manual slider
Magnetometer
Magnetometer / compass
Partial
Partial
Prefer webkitCompassHeading
Barometer
PressureSensor
Rare
Rare
Graceful degrade
Geolocation
geolocation
Prompt
Prompt
Outdoor workshops
Battery
getBattery()
Deprecated
Varies
Subtle only
Vibration
vibrate()
No
Yes
Output, not input
Force touch
force on pointer
Some iOS
Rare
Pressure-style apps
20-part score card — PDF one-pager (open)
5-minute open ritual — Conductor ?start= + countdown
Silent movement piece — Train & Shake visual-only (facilitator)
Audience phones — audience
Accessibility mode — hub “Larger UI” + omo-a11y CSS
Sensor safari — 15 min: rotate stations (light, gyro, mic, camera)
Synthesis tour v2 — pair each stop with one sensor constraint
PWA manifest — manifest.webmanifest
Offline cache — sw.js (core assets)
Header QR share — all apps
i18n — Norwegian + English
Telemetry opt-in — anonymous app usage
Version pin — ?v=2 for workshops
Feature detect page — support.html lists sensor APIs per device
Light Theremin · Gyro Whirl — shipped
Ring Mod Gong · Hard Sync Lead — shipped
Spectral Freeze — shipped
WebRTC room — when acoustic sync isn’t enough
Feature detect page — support.html
Contributions welcome: pick an open item, open a PR, link it here and in the wiki .