Table of Contents
- Getting Started
- Station Selection
- Broadcast Interface Overview
- Decks (A & B)
- Mixer, Cue Routing & DSP
- Voice FX (Microphone)
- Voice Track Recording
- Playlist Manager & Smart Playlists
- Music Library & Tag Editor
- AutoDJ & Clocks
- Queue
- Cart Wall
- Requests
- Streaming / Broadcasting
- Scheduler & Automation
- Clock Widget
- History
- Statistics & Reporting
- Relay Manager
- Built-in Tools
- Settings & Security
- Desktop Layout
- Notifications
- Updates
- Planet Hosts Cloud Sync
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, Cue Routing & DSP
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 |
Mute Buttons
Each source row has an M mute button and a C cue button. Mute silences the source on the speakers only β the encoder/stream keeps broadcasting, so listeners never hear your mute.
Headphone / Cue Routing
The C button routes a source to the headphone (cue) bus independently of the main mix. This is a pre-fader listen β ideal for checking the next track before going live. Adjust the Cue slider for the headphone level, and use the Air Monitor / Cue Monitor checkboxes to choose what you hear.
VU Meters
Each source has a VU meter showing audio level activity. The Audio Meters panel adds Peak Hold, a LUFS loudness readout, and a Phase Correlation meter for the master output.
Master DSP Chain
The DSP panel applies processing to the entire mix in this order: EQ β Noise Gate β Compressor β Limiter β AGC β Stereo Enhancer β Bass Boost. Each effect can be toggled with its Bypass checkbox.
- EQ β 3-band low/mid/high (Β±12 dB)
- Noise Gate β threshold, attack, and release
- Compressor β threshold, ratio, attack, release
- Limiter β threshold and release (protects against clipping)
- AGC β automatic gain control with target level and max gain
- Stereo Enhancer β widens or narrows the stereo image (mid/side)
- Bass Boost β low-shelf boost/cut
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 / Unmute All command (Tools menu) mutes all local speakers 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 & Smart Playlists
Access via Tools β 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 with search and rating filter
Virtual "Library" Folder
The Library folder 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 |
| Load to AutoDJ | Loads the selected playlist into the AutoDJ rotation |
| Schedule | Schedule the playlist to play at a time (daily or a specific weekday) |
Ratings
Rate any track 1β5 stars with the Rate buttons. The Rating β₯ filter limits the view, and AutoDJ prefers higher-rated tracks during rotation.
Smart Playlists
Open Smart playlists... to create rule-based playlists that auto-match your library. Add rules like Genre contains "Rock", BPM > 120, or Year >= 2000, preview the matches, and load them into AutoDJ (queue or rotation). Smart playlists are saved and re-evaluated automatically.
ReplayGain Scanner
Open ReplayGain scanner... to measure each track's loudness (gain/peak) and write ReplayGain tags for consistent playback volume.
9. Music Library & Tag Editor
Open Tools β Music Library for a full browser with Songs, Albums, Artists, and Genres views (grouped trees), plus a Duplicates tab. Search and genre-filter the Songs view, add tracks to a playlist, or import a folder.
Right-click any track in the playlist and select Edit Metadata to open the full tag editor, which integrates MusicBrainz search and Cover Art Archive cover art.
Duplicate Finder
The Duplicates tab finds duplicate tracks by filename, by duration + file size, and by SHA-256 content hash so identical files with different names are caught too.
10. AutoDJ & Clocks
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 |
| Mute | Mute AutoDJ on the speakers (stream continues) |
Rotation Rules
- Artist Protection β prevents the same artist playing too soon (separation count)
- Repeat Protection β prevents the same title repeating (separation count)
- Category β filter the rotation by genre category
- Ratings β AutoDJ prefers higher-rated tracks
Clocks
The Clock box on the AutoDJ panel lets you pick a time-based rotation template. Each clock has segments (e.g. 06:00β10:00 β Rock); during a segment AutoDJ prefers tracks matching that category. Use Manageβ¦ to create/edit clocks. The active segment is shown live on the panel.
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 |
Cloud Sync
The Sync settings to cloud button posts your rotation rules (separation, shuffle, duplicate protection) to the Planet Hosts server.
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 |
Cards
Each cart card supports:
- Label β edit in place
- Timer β play automatically every N minutes (Off, 5β60)
- Loop β replay the cart when it ends
- Fade β fade-out duration in milliseconds before the track ends
- Vol β per-cart volume (0β150%)
- Assign β attach an audio file
- β β delete the cart
Group names are editable in place. Use Import / Export at the top to save or restore your entire cart wall as JSON.
13. Requests
The Requests panel polls the server every 10 seconds for listener song requests.
Tabs & Limits
- Pending / Approved / Denied tabs
- Max/hr β per-listener request rate limit
- Duplicate protection β blocks the same song being accepted twice
- Cooldown β minimum minutes between plays of the same song
- Mark all read β clears the new-request badge on the tab
The Requests tab shows Requests (pending count) and flashes Β· N new when fresh requests arrive. Use Accept to approve (respecting cooldown/limits), Add to Queue to play it if it's in your library, or Reject.
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. Scheduler & Automation
The Automation Scheduler (bottom-left in the sidebar) lets you create time- or event-triggered tasks that chain multiple actions with retry logic and a full execution history. Supported actions include:
- Play playlist, category, jingle, commercial, or voice track
- Connect / disconnect / reconnect a stream
- Enable or disable AutoDJ
- Start / stop recording
- Update now-playing metadata
The Event Scheduler panel on the broadcast desktop schedules playlists at a time β daily or a specific weekday β with an enable/disable toggle per entry.
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 & Reporting
| 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) |
The Reports tab provides played-songs logs, request history, broadcast hours, recording reports, and error reports.
19. Relay Manager
The Relay Manager lets you configure relay/re-broadcast targets. Listener counts for Icecast and SHOUTcast relays refresh every 15 seconds.
20. Built-in Tools
All tools live under Tools in the top menu:
| Tool | Description |
|---|---|
| Music Library | Browse by Songs/Albums/Artists/Genres, search, genre filter, duplicates, add to playlist |
| Playlist Manager | Folders, Smart Playlists, ReplayGain scanner, ratings, scheduling |
| Voice Track Recorder | Record, trim, normalize (-16 LUFS), preview, upload or save to playlist |
| Audio Converter | Batch convert MP3/WAV/FLAC/OGG/AAC with bitrate/sample-rate options (uses ffmpeg) |
| Log Viewer | Live application log with search, level filter, and export |
| Audio Test | Play test tones (left/right/both, 440 Hz, 1 kHz, sweep) |
| Latency Test | Measure round-trip audio latency (speaker β mic) |
| Artwork Downloader | Scan the library, fetch Cover Art Archive art via MusicBrainz, save + embed |
21. Settings & Security
Access via File β Settings. Settings are organized into beginner-friendly tabs: General, Audio, Broadcast, Music & Auto DJ, Library & Recording, Hotkeys & Alerts, Planet Hosts, and Advanced.
Security
- PIN lock β lock the app with a PIN on startup and after an idle session timeout
- API Key β view/copy the saved API key used to authenticate with the Planet Hosts API
22. Desktop Layout
The broadcast interface uses a canvas-based layout with draggable panels across two desktops (Main and Secondary). Panel positions, sizes, and closed states save automatically. Re-open closed panels from the Window menu, and reset with the Reset Layout button. The Controls tab holds the DSP, Cart Wall, Encoders, Event Scheduler, Event Log, FTP, PAL Scripts, and Relays panels β each closable and restored from the Window menu.
23. Notifications
In-app notifications (Tools β Show Notifications) alert you to stream drops, errors, and reconnects. Requests also post a notification and a badge on the Requests tab when new requests arrive.
24. Updates
The app checks for updates on startup (when enabled in Settings). Use Help β Check for Updates to see the latest version and changelog.
25. Planet Hosts Cloud Sync
Now-playing metadata is uploaded automatically on every track change, playlists sync to your Planet Hosts account, and the AutoDJ panel's Sync settings to cloud button pushes your rotation rules to the server. DJ accounts can be managed from Settings β Planet Hosts.