Ambient Sound Generator. A listening device (or, a jukebox) for ambient soundscapes.
ET-01 1 ASG is a hardware-driven audio system in which a grid of physical switches maps directly to audio behaviors. The interaction model is state-based: the combination of switch positions produces a bitmask that resolves to a single sound, or channel. The 6x4 switch grid gives the machine a theoretical capacity of ~16.7 million sounds.
There is no display. Instead, the system relies on a single status LED and text-to-speech for user feedback.
Hardware
- Switch grid (6×4 layout → 24 inputs + 4 aux switches)
- Raspberry Pi (3A+)
- MCP23017 I/O expander
- Internal power supply / step down module.
Software
The core system is written in Python. Audio playback is handled by mpv 2, while sound effects and text-to-speech (eSpeak 3) run alongside it, allowing the system to speak, react, and provide feedback. A custom control layer manages buffering, transitions / audio ducking, and failure states. An admin layer enables remote control and debugging over SSH. Data is stored in a simple SQLite database, and a set of Python utility scripts helps curate and manage the various audio sources and files.
ASG> status Currently playing: chichibu yatake [64423] +------------------------------+ | [x] [ ] [ ] [x] [x] [x] | | [x] [ ] [x] [x] [x] [ ] | | [ ] [ ] [x] [x] [x] [x] | | [ ] [ ] [ ] [ ] [ ] [ ] | +------------------------------+ ASG>
Audio Sources
The system supports both live-streamed audio and pre-recorded material. Thus, depending on the source, it either reproduces something fixed or connects to something ongoing. 4
In its current state, the machine streams a limited selection of live audio - such as experimental streams from the Locus Sonus 5 project - but the bulk of the content is pre-recorded and manually curated.
For fun, there is also a radio mode in which the machine connects to 1,000+ live streaming stations via the Radio Browser 6 API. This effectively transforms the device into a radio, albeit one with possibly the most user-unfriendly channel selection interface ever conceived.
1) See projects/et-01↩
2) github.com/mpv-player/mpv↩
3) en.wikipedia.org/wiki/ESpeak↩
4) Finding reliable live audio sources for this project has proven difficult. One promising approach has been to extract audio from live video streams, given the abundance of video content online. However, major platforms actively discourage or restrict this kind of use, and so far the results have been too unstable for unattended playback.↩
5) locusonus.org↩
6) radio-browser.info↩




