Schedule
The Schedule system lets you plan which content plays at specific times. br\u016bhi’s scheduling on Desktop and Cloud are architecturally different but share the same intent: the right content plays at the right time, automatically.
Desktop Schedule
Section titled “Desktop Schedule”Schedule Grid
Section titled “Schedule Grid”The grid shows one row per day, with a horizontal 24-hour time axis (00:00 to 24:00). Scroll vertically to move between days.
Zoom levels: 0.5× | 1× | 2× (default) | 4×. Use higher zoom to place blocks precisely in short time windows.
Snap intervals: 1 min | 5 min (default) | 15 min | 30 min. Drag operations snap to the selected interval.
Block Types
Section titled “Block Types”| Type | Colour | Description |
|---|---|---|
| Audio File | Blue | A single audio file plays at the scheduled time |
| Playlist | Purple | A playlist (regular or smart) loads and starts playing |
| Live Session | Red | Marks a period as a live slot; no automatic content is loaded |
Creating a Block
Section titled “Creating a Block”- Click on an empty area of the grid at the desired start time.
- The Quick Add panel opens pre-filled with that date and time.
- Choose the block type, enter a label, and select the audio file or playlist.
- Click Add to place the block.
Moving and Resizing Blocks
Section titled “Moving and Resizing Blocks”- Move horizontally — Drag the block left/right to change its start time.
- Move vertically — Drag up/down to move the block to a different day.
- Resize — Drag the right edge to change the block’s duration.
Blocks snap to the active snap interval during drag operations.
Locked blocks (amber badge) cannot be moved or resized. Lock a block from its detail modal to protect a confirmed broadcast slot.
Block Detail
Section titled “Block Detail”Click a block to open its detail modal:
- Label, type, date, times, and duration are displayed.
- Load to Deck — Immediately loads the block’s content to the active deck.
- Queue Playlist — Adds the playlist to the current broadcast queue.
- Lock / Unlock — Protects the block from accidental changes.
Day Overview
Section titled “Day Overview”Click the day label on the left of the grid to open the Day Overview:
- Total scheduled blocks
- Total scheduled hours
- Available (unscheduled) hours
- Block list for the day
How the Scheduler Executes
Section titled “How the Scheduler Executes”The Desktop scheduler monitors wall-clock time and fires each block as its scheduled start time arrives. Execution uses the same trigger engine as Automation.
Fire debounce: if a block fires while another block’s action is still executing, the new action is queued and retried after 150 ms. A re-fire guard prevents the same block from firing twice within 1 second.
Cloud Scheduling
Section titled “Cloud Scheduling”Source Priority Chain
Section titled “Source Priority Chain”Each station has a fallback priority chain:
Live WebRTC stream → Live harbor input (HTTP push) → Scheduled playlist (API-driven) → Silence (fallback)The higher-priority source is always preferred. If a DJ is live, the scheduled playlist pauses. When the DJ disconnects, Liquidsoap automatically falls back to the scheduled playlist.
Scheduled Playlists via API
Section titled “Scheduled Playlists via API”Create a time-based playlist schedule with the API:
POST /api/stations/{id}/scheduleContent-Type: application/json
{ "playlist_id": "pl_abc123", "start_time": "08:00", "end_time": "12:00", "days": ["monday", "tuesday", "wednesday", "thursday", "friday"]}The API generates a Liquidsoap playlist file and signals the station to hot-reload it without restarting the stream.
Automation Rules for Scheduling
Section titled “Automation Rules for Scheduling”Time-based automation rules (trigger type: schedule) can trigger source switches at specific times. See Automation.