Release Notes

Callers Caddy — Changelog

Versioning: 0.XX = Prototype phase (XX = Prototype number).
From the official launch onwards, on 2.0 changed.
Versions 1.xx remain open for the old version.


0.31 — Beat Snap Audition (2026-03-16)

  • Beat Snap Dialog: Preview the loop jump with waveform visualization
  • Dual waveform display (loop-out at the top, loop-in at the bottom) with cursor synchronization
  • Playback sample counter (_playback_sample) in audio engine for precise position determination
  • Engine loop is deactivated during audition (prevents double jumps due to feed-ahead)
  • Layout versioning: _LAYOUT_VERSION Prevents corrupted dock states during changes
  • Versioned saveState()/restoreState() — old state is automatically discarded
  • Bugfix: Dock widgets could no longer be snapped to the dock after switching from P30 to P31.

0.30 — BPM detection, reports, lyrics contrast (2026-03-14)

  • Auto-BPM detection via comb filter bank (scipy/numpy, no new packages)
  • Sub-harmony correction: Check integer multiples, prefer higher tempi.
  • BPM detection runs in QThread (non-blocking).
  • Reports widget: Setlist/music sequence list for GEMA with TXT export
  • Bidirectional ComboBox filtering (location ↔ date)
  • Lyrics contrast: WCAG-based color recognition for Word HTML (bgcolor, background, color)
  • Sanitizer removes block backgrounds, retains inline highlights, and replaces poor text colors.
  • The default stylesheet is updated with every skin change and when setHtml() is called.

0.29 — Release preparation (2026-03-12)

  • Internationalization: i18n module with JSON translations (German/English)
  • 5-level folder structure: 1_Source, 2_Test, 3_Build, 4_Release, _archive
  • Build pipeline: PyInstaller-Spec + build.py (full package, update, source ZIP)
  • Clean DB script: Removes user data, retains reference data (sequences, teaching order)
  • Migration EXE: Separate Access import process
  • Portable paths: App directory next to EXE instead of prototype folder

0.28 — Sequence Window + Design Menu + Audio Fix (2026-03-11)

  • New dockable window „Sequences“ (Dock 9, tabbed with Lyrics)
  • Import of 885 singing call sequences from Access MDB (caller.mdb)
  • Cached Live Mapping against Burleson Vocabulary (Teaching Order)
  • Contains filter: Autocomplete search for contained calls
  • Limit filter: Only sequences up to a certain program level.
  • Lazy loading (blocks of 50) for fast scrolling
  • Detailed dialog with all calls and program tags
  • Remapping button (gear icon) for recalculating teaching orders
  • Zoom [-/+] with percentage display (like lyrics widget)
  • New module: sequence_mapper.py (Burleson mapping logic)
  • Database extension: sequences + sequence_calls Tables with indexes
  • Design menu: Load/save/restore layout + skin switching at runtime
  • Named layouts: Callers can save "Live.ini", "Workshop.ini", etc.
  • Playlist Manager renamed to "Planner" (shorter, renamed everywhere)
  • Caller Workflow Guidance: Location → Planner button red → Planner confirmed → Playlist focus
  • Audio fix: Persistent stream (no crackling/humming at song start)
  • WSOLA warmup: 200ms settling phase is output as silence

0.27 — Performance optimization (2026-03-11)

  • Performance measurement framework with Phase A (Baseline) and Phase B (Stress test with 10k songs)
  • Test methodology: 10 repetitions, statistics (Mean/StdDev/Min/Max), CSV export
  • Pool table in the playlist manager: 40% faster through optimized table pattern
  • Song list: 7% faster through the same optimization
  • Insight: QTableWidget rebuild is the bottleneck, not the database or sorting.
  • Optimized pattern: setRowCount(0) + setRowCount(n) + setItem() instead of insertRow()

0.26 — Lyrics display (2026-03)

  • Lyrics widget as a dockable window (tabbed with song data)
  • Supported formats: HTML/HTM, RTF, TXT
  • Auto-Fit: Font size is automatically adjusted when text fits on a page.
  • Auto-scroll: Proportional to the song's progress
  • Smart color cleanup: Backgrounds removed, section colors retained.
  • Toolbar with auto-scroll/auto-size toggle and zoom +/-
  • Light Blue Skin: Second color scheme (light surface, blue accents)
  • Muted and indicator colors for better contrast in both skins
  • Loop-save bug fix: Snapshot mechanism saves loop values before song changes
  • Shared data folders (music/, lyrics/, playlists/) save disk space

0.21 — Playlist and Playlist Manager (2026-03)

  • PlaylistWidget: Slim, tabbed next to the song list, load/save as .txt
  • PlaylistManagerWidget: Two-panel view with song pool and playlist mirror
  • Song transfer: Double-click, arrow buttons, drag & drop
  • 4 sorting options: Alphabetical, Quality, Last played, Recommendation
  • Filter: All / Pattern only / Singing only
  • Auto-Advance: Next song at song end, stop or fade-out
  • Fade-Out: Configurable linear volume ramp (default 3s)
  • Recommendation system integrated (originally P25)
  • Integrated playlist builder (originally P24)

0.20 — Playback history (2026-03)

  • Three-layer architecture: play_history, song_location_stats, on-the-fly calculation
  • „"Last played" column in the song list
  • Location-based statistics (when and where each song was played)
  • Renaming: "Club" becomes "Location" (generalized for Club + Special)
  • INI setting for date format (German/American)

0.19 — Locations (2026-03)

  • Club and special administration as selectable contexts
  • Location selection influences song recommendations and history.

0.18 — Pattern/Singing Mode (2026-03)

  • Songs can be marked as patterns, singing, or both.
  • Type abbreviation (P/S/PS) in song list and pool display
  • Filter by mode in the playlist manager

0.17 — Current pace (2026-03)

  • Saved tempo per song for tonight
  • Tempo is automatically restored when a song is loaded.

0.16 — Song list with search (2026-03)

  • Song list as QTableWidget with real-time search filter
  • Search by title, label, and filename

0.15 — Portable Paths (2026-03)

  • Relative paths for songs and data
  • The application can be moved to a USB stick or between computers.

0.14 — Auto-Save (2026-03)

  • Automatic saving of all changes (song data, settings)

0.13 — Song Data Model (2026-03)

  • SQLite database for songs, locations, history
  • Song fields: Title, Filename, Label, Quality, Pattern/Singing, Tempo

0.07 — Dock Window System (2026-03)

  • QDockWidget-based windowing system with free arrangement
  • Move, dock, stack, and resize windows
  • The layout is saved and restored upon restart.
  • Resize rules per window type
  • Integrated: P8 (Show/Hide), P9 (Move), P10 (Resize Rules), P11 (Docking), P12 (Layout Persistence)

0.06 — Loop with tempo adjustment (2026-03)

  • Loop region remains stable during tempo changes
  • Proprietary streaming WSOLA algorithm (no Rubber Band/SoundTouch)

0.05 — Loop In / Loop Out (2026-03)

  • Markable loop region with start and end point
  • Seamless loop during playback

0.04 — Tempo and pitch simultaneously (2026-03)

  • Independent simultaneous tempo and pitch control

0.03 — Pitch control (2026-03)

  • Change pitch continuously, independent of tempo.

0.02 — Speed control (2026-03)

  • Continuously change playback speed

0.01 — MP3 playback (2026-03)

  • Load and play MP3 files reliably
  • Basic transport controls (Play, Pause, Stop)
  • Position indicator and seek slider