WeaveSignal

What WeaveSignal does

41 features in 1.0.0, grouped by what a station cares about, each with the reason it is there and the page that explains it. The clips are moments from the demo video, played only when pressed. What comes next is at the end, apart, and nothing there is in 1.0.0.

The reasons to switch

What a station gets from WeaveSignal that a playout suite with a guest link and a chat widget beside it does not.

  1. One installation, three routesThe room, the desk, playout, the stream, the chat and the pages in one bundle, by a script, a Cloudron package or Quadlets; not a stack of tools with five logins.
  2. A mix of their own for everyoneThe desk sends each person the show without their own voice, so nobody hears themselves back late and nobody needs a hybrid.
  3. Callers from the station's own pageA listener presses Call the studio on the station's page and waits in a booth of their own until the screener answers; no telephone number, no app.
  4. A profanity delay with DumpThe programme is held 8 s before it leaves the studio; Del Del throws the last seconds away and listeners never hear the swear.
  5. A restart disconnects nobodyThe listener process holds the stream, so playout and the desk can restart underneath it and every player stays connected.
  6. Automation from clocksEach hour is built from a clock with rotation and separation rules; when the desk goes on air playout steps aside, and when the show ends it holds the air.
  7. An Ogg Opus stream, and MP3 when you need itAn Icecast-compatible Ogg Opus stream, an optional MP3 stream, HLS with video, and a player page with the chat on it.
  8. An API with tokens, open routes and webhooksScoped tokens, open read routes for the station's own website, signed webhooks, and an OpenAPI description generated from the code.

Live shows with guests

A presenter and remote guests talk in one room, from a browser, and hear each other as if they were in the studio.

A mix of their own for everyone

The desk sends each person the show without their own voice, so nobody hears themselves back late and no station needs a hybrid or a second mixer. A guest's return arrives 69–77 ms after the voice on one machine.

Cue, talk, mute and talkback

Hear a source in your headphones before it goes to air, talk to one person without listeners hearing, and count a guest in; each on a key, and a cued or muted source never moves on the screen.

A voice chain on every presenter

Each presenter's and DJ's voice goes through a gate, a compressor, a leveller and a limiter set in the station's settings, and every mix has a limiter of its own, so a loud guest cannot clip the programme.

Echo handled, headphones explained

The browser cancels echo and the desk gates the quiet, so a presenter's microphone does not put a guest back into the programme a third of a second late. The documentation says why headphones matter, in words for a guest.

A mix of their own for everyone: a moment from the demo video, with sound and captions. Kettle FM and its people are sample data.

Callers and screening

Listeners call from the station's own page, wait in private, and reach the presenter through a screener.

Callers from the station's own page

A listener presses Call the studio on the player page and talks through the browser on their phone or computer: no telephone number, no app, no account. A real caller rang a public station this way from a phone.

Each caller in a private booth

A caller waits in a room of their own, hearing the show, seen and heard by nobody until the screener picks them up. Callers never hear each other, and a guest never hears a caller who was not sent to the desk.

A screener between the callers and the desk

The screener talks to each caller off air, writes the one line the presenter sees, and sends them to the desk. A caller banned before is marked in the queue before anyone hears them.

To air with the screener's line under their name

The presenter sees the caller's name on air and the screener's line, cues them, takes them to air with one key and drops them with two presses. When the desk cannot take a caller now, the screener sees DESK BUSY.

Callers sound like a phone line

A caller's voice is given a telephone sound by default, so listeners tell the caller from the presenter at once; it is one setting to turn off.

Callers from the station's own page: a moment from the demo video, with sound and captions. Kettle FM and its people are sample data.
The screener's queue: four callers waiting, one marked BANNED BEFORE; below, Dougal's card with one line for the presenter, the consent record, and the Send to desk, To queue and Drop keys.
A screener between the callers and the desk (sample data).

Staying on air

A delay to dump into, a lamp that tells the truth, and restarts that disconnect nobody.

A profanity delay with Dump

The programme is held before it leaves the studio, 8 s by default. Del Del throws the last seconds away: listeners never hear the swear, and the room goes on talking, because the delay sits after the desk and never in the room.

A lamp that tells the truth

ON AIR lights only when listeners can hear you. OPEN, AUTO, STANDBY and PLAYOUT DOWN each mean one thing, and every state word on the desk has a sentence that says what it promises.

A restart disconnects nobody

The listener process holds the stream and keeps a cushion for every player. Playout and the desk can stop or restart underneath it: players hear the fallback for a few seconds, then the programme again, and are never disconnected.

Dead air is filled

When nothing is on air the listener process plays the station's fallback files, and a shipped default loop when there are none, so a new station proves itself before a single file is uploaded.

Trouble named before it is heard

A tile says LINK DEGRADED when a person's connection stalls, the screener's queue says DESK BUSY, the toast says what to press, and the fifteen state words never mean two things.

One person's trouble stays theirs

A guest whose voice fails is resubscribed and a failed mix is rebuilt while the programme carries on; only the programme itself and its link to playout can stop the desk.

A profanity delay with Dump: a moment from the demo video, with sound and captions. Kettle FM and its people are sample data.
A lamp that tells the truth: a moment from the demo video, with sound and captions. Kettle FM and its people are sample data.
A restart disconnects nobody: a moment from the demo video, with sound and captions. Kettle FM and its people are sample data.

Playout and the schedule

Automation fills the air between shows, from a week planned on a grid.

Automation from clocks

Each hour is built from a clock: music blocks with rotation and separation rules, and the US statutory rule for stations that need it. When the desk goes on air playout steps aside; when the show ends, playout holds the air.

The week on a grid

Live shows, automation blocks, series and seasons on one week, with the episode, series, show and log editors beside it; a conflict is marked where it is, and a draft can be made from a rule.

A library and a per-play log

Files are imported with their tags, every play is logged with its time, and listener hours and sessions are kept, for the reports a licence asks for. A legal logger records the programme for as long as retention says.

One loudness for the station

Playout's chain holds the stream near −16 LUFS with a peak limiter after it, so a live show and the music block after it sit at the same level in a listener's ears.

Now playing, by the API

The show and the track on air, for the station's own website and the slate, from one route; up next is kept off for US statutory webcasters.

The studio app's Schedule tab showing a week: automation blocks for the daytime and evening playlists, live shows such as Kettle Breakfast, The Long Lunch and Kettle Drive, one marked CONFLICT, and the current time line on Tuesday.
Automation from clocks (sample data).

Listeners

A stream any player opens, video when a station wants it, and a page with the chat on it.

An Ogg Opus stream, and MP3 when you need it

An Icecast-compatible stream in Opus, which every current player opens, and an MP3 stream for older players and the directories that need one, off until a station turns it on.

Video, when a station turns it on

Cameras, a vision mixer and a slate with now playing and a still per show, captions, and AV1 in HLS behind the delay, with an audio-only toggle for the viewer. Run against stand-ins so far, not a studio.

A player page with call-in on it

The station's own page: the ON AIR lamp, the show on now, Listen live and Call the studio, served by the station with its caching and security headers set; a station's own website can use the open routes instead.

A chat, moderated from the screener

Listeners chat on the player page. The screener's lanes show what needs them, every removal carries a statement of reasons, the minimum age follows the station's jurisdiction, and the chat keeps records only as long as retention says.

Two latencies, on purpose

The people talking hear each other at once; listeners are seconds behind, which lets a player start at once, ride out a poor network and gives the presenter a delay to dump into.

The listener's page on a phone: Kettle FM with its ON AIR lamp, The Morning Kettle with Rory Bruce live now, a Listen live button, and a Talk to the studio panel with a Call the studio button.
An Ogg Opus stream, and MP3 when you need it (sample data).
The chat on the player page at phone width: three messages, one of them held with Waiting for a moderator, and the rules above the composer, with slow mode on.
A chat, moderated from the screener (sample data).

Shows, podcasts and show cards

Each show has a card, a feed and episodes that make themselves.

Show cards drawn by the station

A Poster, a Slate and a square for every show, series and episode, drawn from the show's data and its still, so a link preview, a post and the podcast art match without a designer. Text is fitted, never cropped.

Seasons that fill in their own episodes

A series with a rule makes its episodes as the weeks come, live or pre-recorded; a correction to an episode that has aired is logged, not silent.

A podcast feed per show

RSS with an Opus alternate for each show, from the episodes the schedule already knows; episode files are attached through the API.

The card editor with the Poster layout drawn for Saturday Night Kettle: a dark plane, the show name large, the people as discs.
Show cards drawn by the station (sample data).

Running it

One installation on a server of your own, with the ways out to a bigger audience and other software.

One installation, three routes

The room, the desk, playout, the stream, the chat and the pages in one bundle with one login: a script on a Linux server, a Cloudron package, or Quadlets under systemd. No stack of tools, each with its own idea of who hears whom.

Every port a setting

Each port the station opens is a setting with a free-port check, so it fits beside what the server already runs.

Edges and a CDN when the audience grows

Content steering sends players to health-checked edges; an HLS edge and an audio relay image are shipped, and Bunny can front the station. Measured on local edges so far.

An API with tokens, open routes and webhooks

Scoped tokens for other software, open read routes for the station's own website, signed webhook deliveries when something happens, and an OpenAPI description generated from the code.

Retention by jurisdiction

Choose the station's jurisdiction and recordings, logs, chat and callers' consent are kept as long as its rules ask and no longer; a hold keeps what a complaint concerns, and a sweeper removes the rest.

Staff accounts and roles

Each person signs in with a password or an emailed code, a role says what they may do, and someone who leaves is removed in one place.

Free software, self-hosted

The code is AGPL-3.0-only and the documentation CC BY-SA 4.0. There is no hosted service and no account with anyone: the station is yours.

Settings, Retention: the jurisdiction chosen, with what the station keeps explained.
Retention by jurisdiction (sample data).

The studio app

A desktop program for whoever runs the show, with every action on a key.

The desk, the screener, the carts and the schedule

Six sources, the lamp, the delay, the audience and the picture on one screen; the screener's queue and the chat's lanes on the next tab; the cart wall and the week on the others. Light and dark, with a text size that is remembered.

Every action on a key

One keymap across the tabs: the digits for the sources, Del Del to dump, F1 to F6 for the carts, F7 for the picture. A key whose feature is not in 1.0.0 says so in a note and does nothing to the room.

A cart wall

Banks of jingles, beds and stings under the left hand, fired from any tab; a bed on air is ducked under an open microphone. A demo pack of 50 openly licensed sounds is in the repository.

Linux and Windows, with an updater

An AppImage, a .deb and an .rpm for Linux, and an unsigned installer for Windows; updates are signed, with a rollback for the AppImage that is built but not yet run on a real install. The server runs on Linux.

The desk as the studio app shows it with a show running: the clock and rundown on the left, the stage in the middle with the ON AIR lamp, and listeners, the picture and the carts on the right.
The desk, the screener, the carts and the schedule (sample data).
The cart wall with a bed looping and ducked under the open microphone, another cart cued in your headphones, and both listed under Sounding.
A cart wall (sample data).

Coming next: not in 1.0.0

These are planned and not built. Each says what a station does today instead. The full list of what 1.0.0 leaves out is in the documentation, and a key in the studio app whose feature is planned says so in a note and does nothing to the room.

The DJ overlap handover planned
Two DJs on air together across the boundary between shows: the incoming DJ joins and is cued before their slot, a window opens on the desk before the post, the two talk to each other on air, and one key passes the programme over (ADR-0074).
In 1.0.0 the next DJ joins off air like a guest and the presenter puts them on air by hand with their digit; the handover key shows a note. The desk's keys
WHIP for remote DJs planned
A DJ sends a live stream into the room from an encoder such as OBS, the standard way.
In 1.0.0 a remote DJ joins from a browser with a microphone. Glossary
The presenter kit planned
For a presenter at home: one clock, radio presets, a patchbay, and VBAN in and out, in place of a virtual mixer on their machine.
Moved to release two (ADR-0207). In 1.0.0 presenters join from a browser and the studio app drives the desk. Presenter kit
A telephone line planned
Callers who dial a number.
Not in release one: callers press Call the studio on the station's page and talk through a browser. The comparison names the phone systems that take calls from a number. The comparison
A macOS studio app planned
The desk and the screener on a Mac.
A presenter or guest on a Mac joins from the browser as anyone does; running the desk from a Mac is not possible yet. Packages and install files