Web-based sound experiments for Stanford’s NMP CODE Ensemble.
This repository hosts standalone HTML/Web Audio webapps and publishes them through GitHub Pages. The main entry point is the generated webapps/ index page.
Live site: https://cchafe.github.io/153a.github.io/webapps/
The repo is organized by themed collections of interactive browser instruments:
webapps/moss/: “Life in the Boundary Layer” variationswebapps/spiderBallooning/: spider ballooning sonification variationswebapps/remoteControl/: remote-control / vocal synth experiment(s)Webapps can be played together for an ensemble as a concert piece, or can be used as stand-alone solo instruments.
Most apps are self-contained HTML files with inline CSS/JS that rely on:
AudioContext start/resume behavior).
├── .github/workflows/
│ └── generate-indexes-of-webapp-subdirectories.yml
├── scripts/
│ └── generate-indexes-of-webapp-subdirectories.mjs
├── webapps/
│ ├── index.html (auto-generated)
│ ├── moss/
│ │ ├── index.html (auto-generated)
│ │ └── *.html (individual webapps)
│ ├── spiderBallooning/
│ │ ├── index.html (auto-generated)
│ │ └── *.html
│ └── remoteControl/
│ ├── index.html (auto-generated)
│ └── *.html
└── README.md
Check out our current work!
webapps/moss/Multiple versions of “boundary layer / moss” sonification pieces by different contributors (for example: calvin-boundary-layer-sonification.html, kimia-boundary_layer_instrument_v3_mossfix.html, tristan-moss.html).
webapps/spiderBallooning/Multiple spider-ballooning sonification implementations with different synthesis/interaction approaches (for example: renee-spider.html, chris-spiderBallooning.html, calvin_spider-ballooning_claudeOpus4.5.html).
webapps/remoteControl/Remote-control inspired vocal/FM synthesis experiment (currently remoteControlWebappVolume.html).
The site is autogenerated under the webapps/ root directory.
Index pages are generated automatically by:
scripts/generate-indexes-of-webapp-subdirectories.mjs.github/workflows/generate-indexes-of-webapp-subdirectories.ymlWhat the script does:
webapps/ for immediate subdirectories.index.html linking all .html files except index.html.webapps/index.html linking each collection directory.The GitHub Action runs on pushes to main when relevant files change, then commits any regenerated index files automatically.
Because these apps use browser APIs, run them via a local server (not file:// URLs):
cd /home/.../153a.github.io
python3 -m http.server 8000
Then open:
http://localhost:8000/webapps/cd /home/.../153a.github.io
node scripts/generate-indexes-of-webapp-subdirectories.mjs
webapps/ (or create a new one).node scripts/generate-indexes-of-webapp-subdirectories.mjspython3 -m http.server 8000http://localhost:8000/webapps/index.html files.main (or open a PR). The workflow will re-check and auto-update indexes if needed.webapps/**/index.html files are generated. Avoid manual edits because they will be overwritten.webapps/index.html and subdirectory indexes were committed or allow the workflow commit to complete..html or .htm and not named exactly index.html.