Skip to content

Latest commit

 

History

History
260 lines (194 loc) · 13.4 KB

File metadata and controls

260 lines (194 loc) · 13.4 KB

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.

Touch performance

Idea Sensor / API Music role Synthesis hook
Kaoss Pad X–Y pad + loop clock Quantized lead / beat loops (Kaossilator-style) Kaoss Pad

Motion & orientation

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

Microphone & audio input

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

Camera & light

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

Touch & device

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)

Shipped / partial Sensing
Motion Trump, Compass Wah Tilt, heading
Firefly, Harmonizer, Swarm Bloom Mic onsets, chroma, evo soundscape
Train & Shake, Hum vs Clap Accel features → ML
Bow Phone Camera + hand motion
Video Sonifier Camera motion → pitch
Additive Bells Downward accel hit
Granular Tilt, Delay Throw Tilt

New instruments — synthesis

Different ways to generate sound beyond what the hub already demos. Pair with touch or a sensor for performance.

Oscillator & modulation

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

Physical & waveguide

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

Granular & spectral

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

Sampling & convolution

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

Algorithmic & generative

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

Lo-fi & hybrid

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)

Idea Music role Tech
Pentatonic Flute Melody by breath flute-blow
Mic Theremin Solo melody mic-theremin
Hum vs Clap Call-and-response hum-clap
Tilt Harp Plucked glissandi tilt-harp
Delay Throw Rhythmic layers delay-throw
Bow Phone Bowed strings bow-phone
Video Sonifier Environment texture video-sonifier
Audience swell Crowd layer audience
Compass Wah Orientation filter compass-wah
Firefly Pulse sync firefly
Harmonizer Group tonality harmonizer
Evo Drumkit Evolved grooves evo-drumkit
Circular drums Ring sequencer circular-drum

Enhance existing apps

  • 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

Ensemble & sync

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 netTrain & Shake
  • Hum vs clap classifierhum-clap
  • Genetic drum patternsEvo Drumkit
  • Gesture → synthesis paramsTilt 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

Workshop & concert

  • 20-part score card — PDF one-pager (open)
  • 5-minute open ritual — Conductor ?start= + countdown
  • Silent movement piece — Train & Shake visual-only (facilitator)
  • Audience phonesaudience
  • 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

Infrastructure

  • PWA manifestmanifest.webmanifest
  • Offline cachesw.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 pagesupport.html lists sensor APIs per device

Priority (suggested)

  1. Light Theremin · Gyro Whirl — shipped
  2. Ring Mod Gong · Hard Sync Lead — shipped
  3. Spectral Freeze — shipped
  4. WebRTC room — when acoustic sync isn’t enough
  5. Feature detect pagesupport.html

Contributions welcome: pick an open item, open a PR, link it here and in the wiki.