Table of Contents
- Getting Started
- Station Selection
- Broadcast Interface Overview
- Decks (A & B)
- Mixer & Crossfader
- Voice FX (Microphone)
- Voice Track Recording
- Playlist Manager
- Track Metadata Editor & MusicBrainz
- AutoDJ
- Queue
- Cart Wall
- Requests
- Streaming / Broadcasting
- Event Scheduler
- Clock Widget
- History
- Statistics
- Relay Manager
- PAL Scripts
- Settings
- Desktop Layout
1. Getting Started
Login
Launch the application to reach the Login screen. Enter your credentials:
- Username — Your PlanetHosts account username
- Password — Your account password
- API Key — Your API authentication key
- API Base URL — The server URL (defaults to the PlanetHosts API)
Check Remember Me to save your credentials for next launch. Click Login to authenticate. On success you'll proceed to station selection.
2. Station Selection
After login, choose which stations to broadcast to:
- Select one or more stations from the list
- Click Connect to enter the broadcast interface
The StationSelectionViewModel loads your station list from the API and pre-selects any previously chosen stations.
3. Broadcast Interface Overview
The broadcast interface is a multi-panel desktop workspace organized across two canvases (Desktop A and B). Each panel is a draggable, resizable DockablePanel.
Desktop A panels:
| Panel | Default Position | Description |
|---|---|---|
| Deck A | Top-left | Primary playback deck |
| Deck B | Top-center | Secondary playback deck |
| Voice FX | Top-right | Microphone controls and processing |
| Playlist | Middle-left | Folder/track browser and scheduling |
| Queue | Middle-center | Upcoming tracks |
| Mixer | Middle-right | Volume sliders and crossfader |
| AutoDJ | Bottom-left | Automated playlist rotation |
| Cart Wall | Bottom-center | Sound effect buttons (jingles, ads, drops, sweeps) |
| History | Bottom-right | Recently played tracks |
| Statistics | Far-bottom-left | Listener stats |
| Requests | Far-bottom-center | Listener song requests |
| Clock | Far-bottom-right | Multi-timezone clock |
| Fader | Far-bottom-right | Crossfader control buttons |
Menu items at the top provide access to: Voice Track, Settings, Playlist Manager, and window navigation.
4. Decks (A & B)
Each deck functions as an independent audio player.
Controls
| Button | Action |
|---|---|
| Load | Open a file dialog to load an audio file |
| Play | Start playback (if no file loaded, pulls from queue) |
| Pause | Pause playback |
| Stop | Stop playback |
| Cue | Seek to the beginning of the track |
| CP (Cue Point) | Save current position as a cue point |
| Skip | Skip to the next track in the queue |
| EQ | Toggle EQ info display |
| Preview | Toggle preview mode |
| Talk Over | Toggle talkover mode |
| Air | Toggle air status (send to stream) |
| Cue Monitor | Toggle cue monitoring |
| Volume Slider | Adjust deck volume |
Display Fields
Track Title — Current song name
Artist, Album, Year, Genre, BPM, Bitrate, File Type, Sample Rate
Position — Elapsed time / Remaining time / Total duration
Waveform/Level — Visual audio level meters
Track History
Every played track is recorded automatically: TrackPlayed delegates fire to update both the History panel and Statistics.
Deck Alternation
When a track ends on one deck and the other deck is not playing, the next track is automatically started on the opposite deck. This is wired through PlaybackEndedAsync delegates.
5. Mixer & Crossfader
The mixer provides volume control for all audio sources.
Volume Sliders
| Slider | Controls |
|---|---|
| Deck A | Volume for Deck A (adjusted by crossfader position) |
| Deck B | Volume for Deck B (adjusted by crossfader position) |
| Mic | Microphone input volume |
| Cart | Cart Wall volume |
| AutoDJ | AutoDJ engine volume |
| Line | Line input volume |
| Master | Overall master output volume |
VU Meters
Each source has a simulated VU meter showing audio level activity.
Crossfader
The crossfader blends between Deck A and Deck B:
- Fully Left (0) — Only Deck A audible (Deck B silent)
- Center (50) — Both decks at full volume
- Fully Right (100) — Only Deck B audible (Deck A silent)
Fade Buttons (Fader panel)
- Fade A → B — Starts the next queued track on Deck B, then crossfades from A to B over 2 seconds
- Fade B → A — Starts the next queued track on Deck A, then crossfades from B to A over 2 seconds
The fade animation runs at 30ms intervals (~67 steps). When a fade starts, the FadeStarted event triggers the destination deck to begin playing.
Master Mute
The Mute toggle mutes all local speakers (Decks A/B, AutoDJ, Microphone, Cart Wall, and Master output) without affecting the streaming output.
6. Voice FX (Microphone)
The Voice FX panel provides microphone control and audio processing.
Controls
| Control | Action |
|---|---|
| Vertical Fader | Mic gain / volume level |
| Level Meter | Green vertical bar showing mic input level (with clipping indication) |
| Mic On | Toggle the microphone on/off |
| Auto | Toggle auto-ducking (music volume reduces when mic is active) |
| Air | Toggle air status (mic sent to stream) |
| Cue | Toggle cue monitoring |
| Press To Talk | Hold to activate mic (releases when mouse is released) |
| Lock Talk | Check to keep mic locked on without holding the button |
| Config | Opens the Voice FX Configuration dialog |
| EQ | Expands the processing section |
How Mic Activation Works
The mic is live when all three conditions are true:
- Mic On is enabled
- Either Lock Talk is checked OR Press To Talk is being held
Processing Section (collapsible)
- Compressor — Compresses dynamic range (0–100)
- Noise Gate — Filters background noise below threshold (0–100)
- Limiter — Prevents audio clipping (0–100)
- EQ Low / Mid / High — Three-band equalizer
Auto-Ducking
When enabled, active mic automatically reduces music source volumes to 25%. Original levels are restored when the mic is deactivated.
Voice FX Configuration Dialog
Opened by clicking Config in the Voice FX panel:
| Setting | Description |
|---|---|
| Input | Select microphone input device (enumerated from system) |
| Output | Select output device |
| Fade Curve | Linear / Logarithmic / Exponential |
| Levels (L/R) | Left and right channel level faders |
| Preview | Visual graph area |
7. Voice Track Recording
Voice Track lets you record audio and upload it to a playlist. Access via Menu → Voice Track.
Workflow
- Load Playlists — Fetches available playlists from the API (falls back to local library folders)
- Record — Click the red Record button. Recording saves to the voice tracks folder with a timestamp filename
- Stop — Click Stop to end recording
- Preview — Listen to the recording before uploading
- Set Metadata — Enter Title and Artist for the track
- Choose Target — Select a destination playlist from the dropdown
- Upload — Uploads the recording to the server (or saves locally if offline)
- Discard — Delete the recorded file and start over
8. Playlist Manager
Access via Menu → Playlist Manager. This is your central library management hub.
Layout
- Left panel — Folder list (library directories + special "Library" virtual folder)
- Right panel — Track list for the selected folder
- Search bar — Filter tracks by title/artist
Virtual "Library" Folder
The Library folder (ID __library__) appears at the top of the folder list. When selected, it aggregates all tracks from all folders into a single view.
Folder Operations
| Action | How |
|---|---|
| New Folder | Enter name in "New Folder" textbox, click New |
| Rename Folder | Select folder, enter new name in rename field, click Rename |
| Delete Folder | Select folder, click Delete (Library virtual folder cannot be deleted) |
| Add Folder | Click Add Folder, pick a directory — recursively scans and imports audio files |
| Add Music | Click Add Music, select audio files to import into selected folder |
9. Track Metadata Editor & MusicBrainz
Right-click any track in the playlist and select Edit Metadata to open the full metadata editor.
10. AutoDJ
AutoDJ automates playlist rotation and queue management for continuous playback.
Mode
- Auto — Automatically advances through rotation
- Manual — Manual track selection
Controls
| Button | Action |
|---|---|
| Load Rotation | Load selected playlist into rotation |
| Start | Begin AutoDJ playback |
| Stop | Stop AutoDJ |
| Skip | Skip to next track |
| Reload | Reload rotation from selected playlist |
| Force Rotation | Force-advance to next track |
| Set Mode (Auto/Manual) | Toggle auto/manual mode |
Queue
| Button | Action |
|---|---|
| Remove Selected | Remove the selected queue item |
| ▲ Move Up | Move selected item up |
| ▼ Move Down | Move selected item down |
| Clear Queue | Empty the entire queue |
11. Queue
The Queue panel shows tracks loaded into the AutoDJ rotation.
Controls
| Button | Action |
|---|---|
| Remove | Remove selected track from queue |
| ▲ | Move selected track up |
| ▼ | Move selected track down |
12. Cart Wall
The Cart Wall provides instant-play sound effects and audio clips organized into groups.
Default Groups
| Group | Purpose |
|---|---|
| Jingles | Station jingles |
| Ad | Commercial advertisements |
| Drop | Sound drops and effects |
| Sweep | Sweepers and transitions |
13. Requests
The Requests panel polls the server every 10 seconds for listener song requests.
14. Streaming / Broadcasting
Adding a Stream
- Click + Add Stream in the Streams panel
- Select an encoder plugin (from available providers)
- Configure stream settings in the Stream Config window
| Setting | Description |
|---|---|
| Stream Type | Icecast / SHOUTcast v1 / SHOUTcast v2 |
| Hostname | Streaming server address |
| Port | Server port |
| Username | Authentication username |
| Password | Authentication password |
| Mount Point | Icecast mount point (e.g. /stream.mp3) |
| Codec | MP3 / AAC / AAC+ / OGG / Opus / FLAC / WAV |
| Bitrate | Stream bitrate |
| Auto Connect | Automatically connect on startup |
Protocol Support
- Icecast — PUT-based source protocol
- SHOUTcast v2 — Standard SOURCE protocol
- SHOUTcast v1 — Two-step handshake (password first, then headers)
Encoder Pipeline
Audio flows: PCM Capture → Encoder → Streamer → Server
15. Event Scheduler
The scheduler panel displays scheduled playlist events as bordered cards. A 30-second timer checks all schedule entries.
16. Clock Widget
The clock panel shows the current time and multi-timezone clocks. Zone clocks update every second and persist across sessions.
17. History
The History panel tracks recently played songs. Each entry shows timestamp, artist, title, and duration. Capped at 200 entries.
18. Statistics
| Field | Description |
|---|---|
| Current Listeners | Live listener count from server |
| Peak Listeners | Peak listener count |
| Unique Listeners | Unique listener count |
| Current Song | Currently playing song title |
| Current DJ | DJ name |
| Bitrate | Stream bitrate |
| Uptime | Session uptime (hh:mm:ss) |
19. Relay Manager
The Relay Manager lets you configure relay/re-broadcast targets.
20. PAL Scripts
PAL (Programming Automation Language) scripts enable custom automation.
| Command | Description |
|---|---|
Enqueue(query) | Search library for matching track and add to queue |
Log(message) | Append text to the script output log |
Lock() | Lock AutoDJ to manual mode (prevents auto-play) |
Unlock() | Unlock AutoDJ back to auto mode |
21. Settings
Access via Menu → Settings. Configure API URL, Remember Me, station info, and FTP settings.
22. Desktop Layout
The broadcast interface uses a canvas-based layout with draggable panels across two desktops. Panel positions save automatically.