Beyla
Beyla
Beyla is the music server that powers KNOB, Noisebridge's 24/7 internet radio station. It's a SOAYAN-N6 mini PC sitting on top of the primary audio amplifier in the RNA Lounge -- the one with MC Escher on top (little green duck, gold chain, knitted cap).
Finding and Turning On Beyla
Beyla lives in the RNA Lounge, upstairs. Look for the amplifier with the green rubber duck on top -- that's MC Escher, and Beyla is the small hexagonal box sitting on the amp.
Beyla has a fancy little LED stripe light that indicates it's on. If Beyla appears to be off, look for a small round button on its side. Press it to power on.
Give it a minute to boot and the stream should come back up automatically.
Physical Audio Distribution
Beyla's 1/8" output jack is split three ways. Each output is converted to balanced audio over ethernet via an audio balun (RCA → ethernet cable → RCA), allowing the signal to travel cleanly over long cable runs to amplifiers distributed around the space.
The three amplifiers:
| Amp | Location | Notes |
|---|---|---|
| Primary (MC Escher) | RNA Lounge, on this amp's top | Beyla sits directly on top of this one. MC Escher (RDG) is permanently affixed to the amp. |
| RNA Lounge / Stairs | On top of the old NB podium, top of the stairs | The FM transmitter lives inside the podium body; the amp sits on top. |
| Hallway | Next to the kitchen, across from the Electronics Lab door |
Volume is controlled independently on each amplifier — each area sets its own level.
Technical Stack
- Liquidsoap -- audio routing, scheduling, and mixing engine
- Icecast 2 -- streaming media server
- Custom web dashboard -- zero-dependency Python HTTP server for now-playing info
The system uses a priority-based fallback chain: live DJ input always takes precedence, then scheduled programming, then a SomaFM internet radio fallback if all local sources fail.
Radio Control API
Beyla exposes a local HTTP control API on port 8081 (http://beyla.local:8081/). It lets you switch genres, queue specific tracks, skip tracks, and see what's playing. The API is available on the Noisebridge LAN only.
An OpenAPI 3.0 spec is available at /api/spec.
Genre Endpoints
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/genres |
List all genres with track counts and subgenres |
GET |
/api/genre |
Get current genre override status |
POST |
/api/genre |
Set genre override — plays shuffled tracks from that genre instead of the normal schedule. Takes effect after the current track finishes. |
DELETE |
/api/genre |
Clear genre override, returning to the normal schedule |
POST /api/genre request body:
{
"genre": "Bass", // required — parent genre name (see GET /api/genres for options)
"subgenre": "Dubstep" // optional — narrows the track pool
}
Queue & Playback Endpoints
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/queue |
Show queued tracks and current genre feed status |
POST |
/api/queue |
Queue a specific track (by track_id or search string)
|
DELETE |
/api/queue |
Clear all queued tracks |
POST |
/api/skip |
Skip the currently playing track immediately |
Search & Status Endpoints
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/search?q=TEXT&genre=GENRE&limit=N |
Search the music library by artist, title, or filename |
GET |
/api/now-playing |
Current track, time remaining, listener count, genre override, and queue depth |
GET |
/api/spec |
OpenAPI 3.0 spec for this API |
Examples
# Switch to Chill mode
curl -X POST http://beyla.local:8081/api/genre \
-H 'Content-Type: application/json' \
-d '{"genre": "Chill"}'
# Switch to Bass / Dubstep specifically
curl -X POST http://beyla.local:8081/api/genre \
-H 'Content-Type: application/json' \
-d '{"genre": "Bass", "subgenre": "Dubstep"}'
# Return to normal schedule
curl -X DELETE http://beyla.local:8081/api/genre
# Search and queue a track
curl 'http://beyla.local:8081/api/search?q=aphex+twin&limit=5'
curl -X POST http://beyla.local:8081/api/queue \
-H 'Content-Type: application/json' \
-d '{"track_id": 42}'
# Skip current track
curl -X POST http://beyla.local:8081/api/skip
Note: Genre names are case-sensitive. Use GET /api/genres to get the exact names. Current genres: Bass, Chill, Electronic, Hip-Hop, Pop/Rock, Blues/Soul, Punk, Dub/Reggae, Metal, Jazz, Classical.
Getting Involved
If you'd like to help run or maintain Beyla, contact @nthmost on the Noisebridge Discord and be prepared to send your SSH public key.
See Also
- KNOB -- the radio station Beyla powers
- Beyla/Genre_Statistics -- music library genre breakdown
- Audio -- sound systems around Noisebridge
- Rubber Ducky Guild -- MC Escher's people
About the Name
Beyla is named after a figure in Norse mythology — one of Freyr's servants, whose name is etymologically linked to bees and who is associated with bees and mead in modern Germanic tradition. The name felt fitting: the SOAYAN-N6 mini PC has a distinctive hexagonal form factor, echoing the geometry of a honeycomb.