Mcaster1Studio

Feature Reference — All implemented capabilities — Last updated: 2026-03-10 (v0.2.0)

Window & Shell

AppRibbon Phase B

Surface Tabs Phase 1–A

Ribbon Box Widgets

Clock Widget Phase A

Weather Widget Phase B

Compact VU Meter Phase B

Surface Layout

Surface Ribbon Phase A

Module Docks Phase 4

Surface Tray Phase A

Surface Event Log Phase A

Surface Automation Scheduler Phase A

Module Reference

ModulePlugin IDKey FeaturesStatus
VU Meter com.mcaster1.vumeter Stereo VU/PPM bars · segmented fill · peak hold (3s) · clip LED · 20 fps smooth ballistics · compact ribbon mode (horizontal bars) · device name label · surface mode or ribbon box mode ✓ Done
Deck A / B / Combined com.mcaster1.deck / .deck.a / .deck.b Dual transport player · track history list · BPM detect · pitch/speed control · crossfader (A↔B) · cue point · loop · 4 hot cue pads · 3-band EQ · hi-res inline VU meter (smooth gradient fill, 30fps, 3-zone coloring) · browser tabs (History/Library/Playlist/Queue) · HTTP stream playback (FFmpeg + ICY) · smart play button (empty deck menu) · drag-from-library · AutoDJ hand-off · rich metadata extraction (TagLib: artist/title/album/genre/year/BPM) ✓ Done
Media Library com.mcaster1.library SQLite (default) or MySQL/MariaDB backend · TagLib scanner · folder watch · search/filter · MusicBrainz lookup · drag to deck (text/uri-list) · right-click to deck A or B ✓ Done
Encoder com.mcaster1.encoder 8 simultaneous slots · 7 codecs (MP3/Opus/Vorbis/FLAC/AAC-LC/HE-AAC-v1/HE-AAC-v2) · 7-state machine (Idle/Starting/Connecting/Streaming/Reconnecting/Sleep/Error) · Icecast2 / Shoutcast / Mcaster1DNAS · ICY 1.x + ICY 2.2 metadata push · per-slot DSP chain (10-band EQ + AGC + PTT duck) · lock-free SPSC ring buffer · hi-res VU meter panel (per-slot L/R bars, broadcast ballistics) · QTableWidget list-view UI · 5-tab config dialog · DnasPoller live listener stats · auto-reconnect watchdog with sleep/wake ✓ Done
Effects Rack com.mcaster1.effects 19" virtual rack UI · IEffectUnit DLL ABI · bypass per slot · RT chain in audio callback · 6 built-in DSP units: EQ31 · Sonic Maximizer · Compressor/Limiter · AGC · Mic Preamp · Stereo Width ✓ Done
Metadata com.mcaster1.metadata ICY 2.2 full editor — 70+ fields across 8 groups (Station · Show · Track · DJ · Social · Podcast · Broadcast · Content) · HTTP PUT push to DNAS · ICY 1.x StreamTitle= always sent for compatibility ✓ Done
Playlist / AutoDJ com.mcaster1.playlist Clock template editor · category-based rotation · artist/title separation · AutoDJ mode (auto-advances on track end) · drag-and-drop queue reorder · broadcast logger ✓ Done
Push-to-Talk com.mcaster1.ptt Latched and momentary modes · mic gain · RT mix into audio callback chain · keyboard shortcut binding · LED indicator ✓ Done
Podcast com.mcaster1.podcast Multi-track recorder (up to 4 tracks) · lock-free SPSC ring buffers · WAV export · chapter markers · 20ms drain timer · works alongside PTT ✓ Done
Video com.mcaster1.video QMediaPlayer-based player · video playlist · RTMP output stub · social cast integration · fullscreen preview ✓ Done
Stream Monitor com.mcaster1.monitor Polls Icecast2 / Shoutcast / Mcaster1DNAS servers · listener count chart (60-sample ring buffer) · custom QPainter chart widget · configurable poll interval ✓ Done
Clock com.mcaster1.clock Ticking HH:MM:SS display · timezone selector · compact ribbon widget · independent instance per surface; also default-pinned to each surface ribbon ✓ Done
Cart Wall com.mcaster1.cartwall Instant-play audio grid (4×4 default, up to 8×8) · CartPlayer (QAudioDecoder → float32 PCM) · colored grid buttons with play indicator · F1–F12 shortcuts · integrated into RT audio callback chain after PTT ✓ Done
Queue (AutoDJ) com.mcaster1.queue Track queue for AutoDJ mode · drag-and-drop reorder · feeds Deck A on track end · wired to Playlist rotation engine ✓ Done
Church Surface Modules (12)
Timer / Clock com.mcaster1.church.timerclock Countdown/count-up service timers · configurable presets · visual time alerts ✓ Done
Graphics Engine com.mcaster1.church.graphics Central rendering pipeline for visual overlays (lyrics, scripture, announcements) ✓ Done
Lyrics Caster com.mcaster1.church.lyrics Worship lyrics display · verse/chorus navigation · CCLI song database integration · GraphicsEngine output ✓ Done
Scripture Caster com.mcaster1.church.scripture Bible verse display · book/chapter/verse navigation · multiple translations · GraphicsEngine output ✓ Done
Announce Caster com.mcaster1.church.announce Announcement/bulletin overlay · rich text · scheduling · rotation · GraphicsEngine output ✓ Done
TelePrompter com.mcaster1.church.teleprompt Scrolling teleprompter · adjustable speed/size/mirroring · sermon notes · GraphicsEngine binding ✓ Done
Media Caster com.mcaster1.church.mediacaster Video/image overlay source · backgrounds · loops · media playback · GraphicsEngine output ✓ Done
Stage Monitor com.mcaster1.church.stagemon Confidence monitor: current lyrics, next slide, timer, notes · for worship team stage display ✓ Done
Audio Mixer com.mcaster1.church.audiomix Multi-channel church audio mixer · per-channel gain/mute/solo/EQ/aux sends · master bus ✓ Done
Transcription Recorder com.mcaster1.church.transcriberec Live sermon transcription recorder · PTT integration · SPSC ring buffer · WAV export ✓ Done
Production Switcher com.mcaster1.church.switchcaster Program/Preview bus · Cut/Dissolve/Fade-to-Black transitions · lower third · all visual source module bindings · 10fps preview / 60fps transition ✓ Done
Service Runner com.mcaster1.church.servicerunner Service rundown with timed segments (Welcome/Worship/Prayer/Scripture/Sermon/Offering/etc.) · auto-advance · TimerClock integration · JSON template save/load ✓ Done
Podcast Surface Modules (13)
Podcast Mixer com.mcaster1.podcast.mixer 6-channel mixer (Host, Guest 1-2, Soundboard, Music, Phone) · per-channel gain/volume/pan/mute/solo/EQ/aux · VU bars · master bus · headphone volume ✓ Done
Podcast PTT com.mcaster1.podcast.ptt Enhanced Push-to-Talk · Hold/Toggle/AlwaysOn modes · Cough button · Talkback · VAD (voice activity detection) · full DSP params ✓ Done
Podcast Recorder com.mcaster1.podcast.recorder Multi-track WAV recorder · show/episode metadata · markers with labels · take management · time display · ring buffer recording · WAV header writing ✓ Done
Podcast Soundboard com.mcaster1.podcast.soundboard Sound pad grid with banks (Intro/Outro, Sound FX, Music Beds) · QMediaPlayer per pad · OneShot/Toggle/Loop modes · custom colors · keyboard shortcuts · JSON serialization ✓ Done
Podcast Effects com.mcaster1.podcast.fx 7-processor voice FX chain: Noise Gate, Compressor, De-Esser, Parametric EQ, High-Pass Filter, Limiter, LUFS Meter · per-processor bypass · reorderable chain · RT-safe DSP ✓ Done
Podcast Editor com.mcaster1.podcast.editor DAW-style waveform editor · timeline with markers · region selection · cut/trim stubs · playback with position indicator · zoom/scroll · QMediaPlayer backend ✓ Done
Podcast Encoder com.mcaster1.podcast.encode Multi-format export (MP3/AAC/OGG/FLAC/Opus) · bitrate/samplerate/channels config · ID3 metadata form · LUFS normalization target · job queue with progress ✓ Done
Podcast Transcription com.mcaster1.podcast.transcribe Transcript segment editor (time/speaker/text/confidence) · speaker labels · SRT/VTT export · chapter marker generation · Whisper integration (v2) ✓ Done
Show Notes com.mcaster1.podcast.shownotes WYSIWYG editor · bold/italic/link/timestamp toolbar · templates (Standard/Interview/Solo) · chapter markers · resource links · guest bios · HTML/Markdown/text export ✓ Done
RSS Feed com.mcaster1.podcast.rss RSS 2.0 + iTunes namespace feed generator · show settings · episode table · feed validation · XML preview · file export ✓ Done
Publisher com.mcaster1.podcast.publisher Multi-target publishing: Local Copy (v1), SFTP/FTP/HTTP (v2) · target management · per-target progress ✓ Done
Podcast Analytics com.mcaster1.podcast.analytics Episode stats dashboard · downloads/subscribers/growth trend · bar chart · episode data table · CSV export ✓ Done
Remote Guests com.mcaster1.podcast.remote Up to 4 remote guests · status indicators · audio level bars · mute/admit controls · join URL generation · WebRTC (v2) ✓ Done
System Modules
System Health com.mcaster1.health CPU/memory monitoring · encoder status summary · deck status · 2s refresh · Prometheus /metrics endpoint (v2) ✓ Done

Theming

Dark (Default)

Classic — SAM Broadcaster Style

Enterprise Pro — Light

Theme selectable live via File → Preferences → Appearance. No restart required. Applied via QApplication::setStyleSheet() using objectName-based QSS selectors.

Audio Engine

FeatureDetail
Audio I/OPortAudio 19.7 with ASIO SDK support
RT callback chaindeck → PTT → cartwall → effects → podcast → encoder (strict order)
Peak meteringstd::atomic<float> — RT safe, post-gain measurement, polled at 20-30fps by VU timers
EventBusaudioLevelsChanged(inL, inR, outL, outR) — queued connection to Qt thread
Thread safetyNo Qt calls, no allocation, no mutex waits in onAudioBlock()
Sample rates44100 / 48000 Hz (configurable in Preferences)
Buffer sizes128 / 256 / 512 / 1024 frames (configurable)

ICY Protocol Compliance

Non-negotiable: ALL encoder targets MUST always send ICY 1.x StreamTitle= even when also sending ICY 2.2. Backward compatibility is mandatory.
ServerICY 1.xICY 2.2Push Method
Icecast2✅ Required❌ N/AHTTP GET /admin/metadata?mode=updinfo&song=…
Shoutcast v1/v2✅ Required❌ N/AIn-stream at icy-metaint boundaries
Mcaster1DNAS✅ Required✅ RequiredHTTP PUT + Icy-Version: 2.2 header

ICY 2.2 Groups (70+ fields)

GroupPrefixKey Fields
1 — Stationicy2-station-*id · name · logo · genre · url · language
2 — Showicy2-show-*title · host · start · end · next · description
3 — Trackicy2-track-*title · artist · album · year · genre · artwork · bpm · key · isrc · mbid · label
4 — DJicy2-dj-*handle · name · bio · avatar · website · email
5 — Socialicy2-social-*twitter · instagram · tiktok · youtube · facebook · twitch · linktree · hashtags
6 — Podcasticy2-podcast-*title · episode · season · feed · guid · duration · chapter
7 — Broadcasticy2-broadcast-*mode · relay · cdn · lufs · codec · samplerate · channels
8 — Contenticy2-content-*explicit · live · type (radio|tv|podcast|socialcast) · rating

SDK / Plugin System

Third-party modules are DLLs exporting a C ABI. The SDK interface library at SDK/include/ provides all headers needed to build external plugins.
ExportPurpose
mcaster1_plugin_info()Returns Mcaster1PluginInfo* — API version, ID, name, type
mcaster1_create_module(IModuleHost*)Factory — creates and returns a new IModule*
mcaster1_destroy_module(IModule*)Cleanup
mcaster1_create_effect(void*)DSP unit factory (optional)
mcaster1_destroy_effect(IEffectUnit*)DSP cleanup (optional)

See SDK/examples/SampleModule/ for a working minimal module DLL. Module DLLs placed in plugins/modules/ are discovered at startup.

Known Refinements Pending (Phase C)