The Endless Acid Banger is an algorithmic human–computer techno jam: music and patterns are generated in the browser with TypeScript and the Web Audio API. The on-screen dials, pattern views, and autopilot switches can be driven by hand or left to the algorithm.
Vitling’s original build (unchanged upstream toy):
www.vitling.xyz/toys/acid-banger
This tree is github.com/aday1/acid-banger — a fork of Vitling’s repository. It is not Vitling’s official release; it keeps the same CC BY 4.0 license spirit: reuse is allowed with attribution to Vitling and the original project, and to this fork when redistributing this variant.
Vitling has described the original as an art project rather than a conventional music product, and has welcomed others to fork and extend it. This fork adds sync, MIDI, OSC, packaging, and documentation on top of that original idea.
| Area | Addition |
|---|---|
| Build | Root npm run build (TypeScript → js/, webpack → dist/), npm run dev / watch, build.ps1 / build.sh. |
| Clock | Internal (original-style clock), MIDI master / slave, Ableton Link via local Node link-bridge + WebSocket; in-app Link guide and link-bridge-README.txt in dist/ after build. |
| MIDI | Device pickers, acid lines mirrored to MIDI out channels 1–2, MIDI learn/forget (right-click controls, CC/note, localStorage key acid-banger-midi-map-v1). |
| OSC | Browser client plus bridge/ Node relay (UDP ↔ WebSocket); panel text for TouchOSC-style UDP vs WebSocket; bridge-README.txt in dist/ after build. |
| Windows | Launch-AcidBanger.ps1 (build, serve, Chrome, optional bridge panel with F9/F10, two desktop shortcuts). BridgeLauncherPanel.ps1 alone for Link/OSC buttons. link-bridge/Start-LinkBridge.ps1 for the Link bridge. |
| UI | Sync / MIDI / OSC panels, fork credit in index.html, CSS theme variables. |
The core musical behaviour, layout, and WebAudio patch still trace to Vitling’s upstream work; the fork layers transport and integration around that core.
- Install Node 18+ and run
npm installin the repo root. - Optional: add
909BD.mp3,909OH.mp3,909CH.mp3,909SD.mp3beside the HTML sources; webpack copies them intodist/when present. - Build:
npm run build(Windows:build.ps1). Output:dist/. - Serve
dist/over HTTP. Web MIDI needshttps://orlocalhost. - Develop:
npm run watch, or rebuild and usenpm run dev(static server; port may differ if 5173 is in use).
On Windows, Launch-AcidBanger.ps1 from the repo root can build, serve, open Chrome, and refresh desktop shortcuts (Endless Acid Banger + Acid Banger Bridges). It also opens a small bridge launcher window (F9 = Link bridge, F10 = OSC); pass -NoBridgesPanel if you do not want that window.
- Internal: built-in tempo (original-style).
- MIDI master: clock + start out; BPM from the dial; mirror to out ch 1–2.
- MIDI slave: clock in; BPM estimate on the dial; pick MIDI input in the panel.
- Ableton Link: run
link-bridge(seelink-bridge/README.txtorStart-LinkBridge.ps1). In the app: Ableton Link, host 127.0.0.1, port 9999 by default. The Clock sync panel linkslink-bridge-README.txtfromdist/after a build.
One input serves both slave clock and learn. Right-click a control for learn/forget; mappings are listed in the MIDI panel. You can also use Export TouchOSC blueprint (JSON) in the MIDI panel to generate a TouchOSC build sheet from current target mappings. Details: CC vs note behaviour, acid-banger-midi-map-v1 in localStorage.
Browsers do not expose OSC UDP directly. The bridge/ Node app relays UDP ↔ WebSocket JSON. See bridge/README.txt and the in-page OSC section; after build, dist/bridge-README.txt.
Vitling’s work can be supported via GitHub Sponsors and music releases / Bandcamp.
The project is licensed under CC BY 4.0. That covers the original work and this fork’s changes: attribute Vitling and the upstream project, and this repository when sharing this fork’s tree.
Upstream: vitling.xyz · github.com/vitling/acid-banger
This fork: github.com/aday1/acid-banger · maintained by aday
Thanks to Vitling for the original Endless Acid Banger — the playful core that made this fork worth building on.
