# MidiBro Changelog ## [1.2.0] (2025-12-31) ### NEW: Audio Ouput "System Synth" - Apple's built-in MIDISynth (macOS) or Microsoft's GS Wavetable Synth (Windows) to play MIDI files - 128 instruments - Play multitrack/multichannel files, e.g. full songs with different instruments for better audition ### NEW: Key Shift Function - Transform MIDI playback to any musical scale (Major, Minor, Dorian, Mixolydian, etc.) - Mode 'Filter': Remove notes that don't belong to the selected scale - Mode 'Constrain': Snap out-of-scale notes to the nearest scale degree - Drag export applies Key Shift to exported MIDI files - Piano Roll and thumbnails show transformed notes in real-time ### Smart Collections - New: Smart Collection Editor with AI Classification cards (Bass, Drums, Pad, etc. without search terms) - Improved: Reduced false positives for Bass, Drums, Melody, Pad, and Pluck (users after update from v1.0/v1.1: run a full scan) - Fix: View no longer gets replaced by background scan results - Fix: Collections with only AI classification now show matching files - Fix: Multi-collection search (Ctrl/CMD+Click) shows correct file counts - Fix: Clicking collection after folder filters correctly ### Generate Variations - New: "Recycle" button - use a generated variation as the new source for iterative generations - New: "Amount" dropdown (1-8) to control how many variations each algorithm produces - New: "Extract Bass from Chords" expanded to 8 patterns: root, walking, lowest, syncopated, octave jump, arpeggio, pedal, chromatic - Improved: Variation card thumbnails now have landscape aspect ratio matching the original file thumbnail - Improved: "Melody Variation (Y)" chord variations now always consonant (removed chromatic alterations that broke chord structure) - Fix: "Melody Variation (Y)" now handles MIDI files with non-standard PPQ correctly (was hardcoded to 480) - Fix: Playhead now stays synchronized with notes for variations with non-standard bar counts ### Drum Mapping - New: 1:n mapping visualization in thumbnails and zoom window - Improved: Editor button turns orange when active (consistent with Key Shift) - Fix: Mapping persists when navigating files with arrow keys - Fix: 1:n mapping shows all target notes in piano roll and drag files ### UI Improvements - New: Thumbnail flash animation when toggling drum mapping or recycling variations - New: "Remove Folder" option in folder context menu (root folders only) - Improved: Audio Output button labels - Improved: Styled message dialogs throughout the app - Fix: Folder view no longer gets replaced by background scan results ### Stability - Fix: Rare crash during idle (heap corruption in text rendering) - Fix: Crash when scrolling fast during playback - Fix: Rare crashes during scan completion - Fix: Rare CoreGraphics crash during System Synth playback - Fix: Missing thumbnails during playback now load progressively - Fix: Playhead cursor better synchronized with notes (30Hz updates) - Fix: Folder view no longer gets replaced by background scan results - Fix: Setting star rating no longer auto-selects first file ------------------------------ ## [1.1.4] (2025-12-22) - Fix: Plugin sync now starts immediately when DAW is at beat/bar boundary (was delayed to next beat/bar) - Fix: Loop duration corruption causing loops sometimes to play only once - Fix: DAW transport now starts MidiBro playback on first click (was requiring manual play first) - Fix: Resolved crash that could occur when closing the app while plugin is connected - Improved: "DAW controls MidiBro" toggle now only visible when "Sync to DAW" is enabled ## [1.1.3] (2025-12-21) - New: Toggle "Follow DAW transport" in main window (in sync with same toggle in 'Audio Settings' window) - New: Octave display in piano roll window - Fix: Bar count now matches DAW display - Fix: Zoom window: close button added, window no longer closes when clicking near edges, shows proper file name when drum mapping active - Fix: Truncated or corrupted MIDI files now recover automatically - Fix: Support for MIDI files with up to 24 tracks (was 12) - Fix: Quoted phrase search (e.g. "kick C minor") now works correctly with path search enabled - Fix: Rare crash when closing app while large library tip dialog is visible - Fix: Rare crash during fast scrolling with large thumbnail cache - Improved: Search term persists when switching folders, X button to clear - Improved: Windows installer checks if DAW is running before updating plugin ## [1.1.2] (2025-12-19) - Fix: App crash during thumbnail progress bar rendering - Fix: Shrink Database progress bar and duplicate removal moved from app startup to Shrink Database menu for faster startup with large libraries - Improved: On startup a large library tip dialog is shown when >1M files ## [1.1.1] (2025-12-18) ### Plugin & DAW Sync - Fix: Playback cursor no longer drifts in Plugin mode - Fix: Bar quantization now starts immediately when DAW is at a bar boundary - Fix: Auto-follow playback no longer freezes - New: Position-aware playback - start playing at DAW position, not always from beginning - New: Sample-accurate beat sync for precise timing at any tempo, seek function (click in thumbnail) works - New: Plugin has better look and feel (black gradient background) ### Main Window - Central table, column "Tracks" renamed to "Parts" to show combined count of channels & tracks (aligned with Multitrack Splitter) - Right panel when drum mapping enabled: top thumbnail pulsating drum icon (every 10s) and orange circle in button "Drum map editor" ### Drum Mapping - Fix: Drum presets did not show up on Windows - New: Save/Save As buttons with confirmation dialog - New: Prev/Next navigation in keyboard picker - UI: Cleaner button layout with checkboxes and actions in separate rows ### Multitrack Splitter - Improved: Now shows "Parts" instead of only "Channels" (groups by track+channel) - shows more results ### Generate Variations - Fix: Variations now produce truly distinct results (seed generation fix) - Fix: Algorithm "Melody Variation Y", first output ("subtle") was generating too short notes ### Misc - New: Lemon Squeezy license key validation - Fix: Improvement of stability ## [1.1.0] (2025-12-12) ### Major New Features - **Drum Mapping** - Full n:1/1:n mapping, 16 bundled presets, keyboard picker with note preview, sequencer visualization, CSV import/export - **Multitrack Splitter** - Extract channels from multi-channel MIDI files, piano roll per channel, drag individual channels to DAW - **Smart Collection Editor** - Visual editor with search term cards, OR logic (up to 20 terms), gear button access ### Improvements - **UI**: Icon buttons in right panel, redesigned About dialog, better window resizing, "Search in path" toggle - **Background Scanning**: Quick Scan from right-click, background toggle, throttled extraction during playback ------------------------------ ## [1.0.15] (2025-11-28) - Fix: Plugin connection stability improved - eliminated crash risk during DAW audio reconfiguration (thanks Jae-an for the diagnostics) - Fix: App crash when closing Generate Variations dialog during AI generation (especially AI Drums) ## [1.0.14] (2025-11-27) - Fix: Musical Key detection improved - before key from MIDI metadata was prioritized; now filename pattern and Krumhansl-Kessler algorithm have higher priority (thanks for your eagle eyes, Simon) ## [1.0.13] (2025-11-24) - Fix: Favorites and Unrated collections now update immediately when rating Files - Fix: Musical Key now extracted and displayed again ## [1.0.12] (2025-11-22) - Performance: Speed improvements for large libraries - GUI no longer freezes after importing large folders - eliminated blocking operations and redundant database queries - Smart collection updates now happen automatically in background - no more waiting for collections to populate after imports - Subfolder file counts can be toggled off for instant app startup with large libraries (toggle in Advanced menu 'Show subfolder counts') - Database operations significantly faster - batched transactions eliminate lock errors, GUI responsive within 2-3 seconds for large libraries - Smart collection updates paused during Quick/Full Scan - eliminates database contention and improves scan speed - Fix: All smart collections now update correctly after imports - all 25 collections show accurate counts - Fix: Playback no longer stutters during background scanning - playback treated as user activity - Fix: Database WAL checkpoint after scan completion ensures data integrity - Fix: Shrink/Expand algorithm exports now produce correct file lengths - drag-and-drop files match selected expansion/shrink factor ## [1.0.11] (2025-11-19) - Performance: Speed improvements for large libraries (thanks Steve and Mike for log files and feedback): - Faster file list loading, startup time, and folder navigation - Collection clicks instant for subsequent clicks - Better concurrent query handling (increased connection pool to 6) - Automatic index optimization on shutdown - Fixed race condition causing unpredictable collection click delays - Note: First launch with this update takes longer due to index creation, but much faster afterwards - Fix: "Shrink Database" now works correctly with very large libraries (4M+ files) and preserves offline folders (thanks Steve) - Fix: Drum compatibility mode drag-and-drop now produces identical MIDI as plugin playback (thanks Wilhelm for screenshots) - Feature: Drum compatibility mode visual feedback in right panel - thumbnail shows drum-mapped pattern with drum icon indicator ## [1.0.10] (2025-11-16) - Fix: Memory corruption crashes eliminated - app no longer crashes when closing during playback, after drag operations, or after waking Mac from sleep (CoreGraphics color context invalidation resolved across UI components) - Fix: Drum compatibility mode now works correctly when dragging MIDI files to DAW and applies consistently during Plugin playback (happy you found this, Wilhelm) - Fix: Piano Roll drum compatibility mode now shows correct note names in note pills (e.g., C2 instead of B0) - Fix: DAW sync stop issue in FL Studio - plugin no longer auto-restarts after manual stop (I hope this helps, Scott) - Fix: Vertical scrollbar clicks in central table no longer change row selection and dragging no longer triggers unwanted MIDI file drag (well spotted, Ira) ## [1.0.09] (2025-11-15) - Fix: Drag & drop from search results in large libraries now correctly drags the displayed file instead of wrong file (good catch, Wilhelm) - Fix: Playback from search results now plays the correct clicked file instead of wrong file - Fix: Search returning zero results after upgrade from v1.0.1 to v1.0.7 (thanks for finding this hidden bug, Wilhelm) - Fix: Collection counts resetting to "..." when playing files, re-enableing after scan completion, folder changes, and rating updates - "Full Scan" Improvements: Skips file counting, more robust database handling (danke, Wilhelm), better progress display with files and remaining time - Improved: Compact debug logging for drum compatibility mappings (single-line output) ## [1.0.8] (2025-11-14) - FL Studio Integration Fixes (thanks, Scott, for testing & spotting this in FL Studio) - Audio blocking - plugin no longer clears audio buffer, allowing downstream instruments to work - Infinite reconnection - plugin now reconnects indefinitely after app restart (was limited to 5 attempts) - Faster connection detection - reduced timer from 500ms to 250ms - Auto-follow first file bug - DAW play now triggers MidiBro playback immediately on first file selection - Plugin status shows "auto-reconnecting..." message when disconnected - Fixed: stopPlaybackOnDrag configuration now works correctly in Plugin mode (DAW playback stops when dragging MIDI files) ## [1.0.7] (2025-11-12) - Performance: Collection clicks now instant for large libraries (was 60+ seconds, now <1 second first click, instant after) - UX: Badge counts update immediately when clicking collections ## [1.0.6] (2025-11-12) - Performance: Collection clicks ca. 50% faster for large libraries (eliminated redundant filtering) - Improved diagnostic logging for collection filtering operations ## [1.0.5] (2025-11-11) - Feature: Auto-Follow: - "Sync to DAW" toggle in right panel now acts as master control for all DAW integration (auto-follow and quantization) - DAW 'play' will start play of selected MIDI file in MidiBro (DAW auto-follow function), also for DAW 'stop'; configurable via Audio Settings window - UI: Updated "Sync to DAW" tooltip to clarify it controls both auto-follow and quantization features - UI: Added tooltip to "Plugin in DAW" button when plugin is disconnected ## [1.0.4] (2025-11-10) - Plugin: compatibility and connection reliability, e.g. for FL Studio (thanks for checking this out, Scott) - Faster connection/reconnection (500ms interval instead of 2 seconds) - Extended logging: DAW name, plugin path & binary date for better version tracking; reduced verbose logging ## [1.0.3] (2025-11-09) - Performance (thanks for contiously testing with your massive library, Mike) - Faster Startup for large libraries (removed unnecessary search index rebuilds, fixed status bar file counting) - Status Bar shows correct file count and count query optimized - Fixed: Table no longer re-sorts on first star rating assignment after folder click - Feature: Playback now stops automatically when dragging MIDI files to your DAW (central table, piano rool) and is configurable in config.json (stopPlaybackOnDrag": true) ## [1.0.2] (2025-11-08) - Performance for Smart Collections, better for large libraries: - Start of app is faster is not waiting for smart collections anymore, they are populized in background when user is not working. Collections show "..." badge and update on-demand when clicked - Search speed improved (30x faster), uses SQLite FTS5 full-text index now, FTS5 index automatically rebuilt on startup to ensure search functionality works correctly - Optimized reduced redundant search terms - Search result limit is 2000 files and displays "2000+ files" indicator when limit reached - Fix: Central panel horizontal scrollbar - clicks no longer trigger spurious row selection changes - Fix: MIDI playback audio bug - eliminated dropped MIDI events at audio block boundaries (clamped sample position to valid range) - Fix: Windows: Automatically converts 8.3 short paths (e.g., KLASS~39) to long paths (e.g., Klassische Musik) - Feature: Quick Scan (in menu "Advanced") for incremental library updates - detects new, modified, and deleted files (much faster than deep & long "Full Scan") ## [1.0.1] (2025-11-06) - Fix: Thumbnail generation from menu crashed on MIDI files with 15+ tracks (JUCE v8.0.8 parser limitation), rebuild hanging/stuck at incomplete progress, shows accurate counts (successful vs. skipped files) - Technical: Added pre-validation for MIDI files (size, header, track count) to prevent JUCE parser crashes - Improved: Registration reminder displays casual phrases - Better UX for scanning progress of large libraries - Windows installer: VST3 always to C:\Program Files\Common Files\VST; better logging and include install.log into diagnostic file; remove not needed icon files ## [1.0.0] (2025-10-31) ### Status 2025-10-31 - Fix: macOS crash 8 minutes after wake from sleep/standby (CoreGraphics corruption - window-level repaint) - Database Size Optimization (Removed duplicate index definition) - Improved Folder Expansion Speed (Removed immediate saveConfiguration() calls) - Optimized Folder File Count Display (Database-first lookup: 50x faster for folders with 18K+ files) - Fix: Windows 10 MSVCP140.dll crash with static runtime linking ### Status 2025-10-30 - Fix: On MacOS a rare crash after wakeup from standby - Fix: For MacOS fixed signing DMG (MacOS 14 Sonoma: right click -> open for DMG and Installer is still needed due to Apple security paranoia) - Fix: On Windows drumkit samples were not integrated in binary - Fix: After addition of folders scan showed not up reliably and collection numbers were not updated - Added registration with Gumroad license key - Fix: Collection icon validation error for 'Arpeggios & Sequences' (changed ยง to > ASCII) ### Status 2025-10-26 - Fixed app crash when scanning a 'special' 3K file folder (UTF-8 issue on Windows) - Improved performance for adding folders, display progress and removing folders - Fix: Periodic GUI freezes when single folders with 10K+ files were added - Added AU plugin for Logic (use it as MIDI FX in your DAW) ### Status 2025-10-23 - Optimized usage of NAS folders (especially for MacOS). Fix: Full Scan does not remove "offline" folders anymore - Optimized database storage handling with checkpoints, truncation on startup ### Status 2025-10-21 - Plugin playback starts now with quantization to stay in sync with DAW (bar or beat - configurable in Audio Settings) - Manual updated - Fix: Multiple collections highlight had issues when playing from central table - Fix: Drumkit Loop had a pause at the end - Fix: On Windows, algorithm "Shuffle" cause app crash ### Status 2025-10-17 - Improved detail piano roll window to deal with drum patterns: - Transpose up/down buttons, drum compatibility mode toggle, drag into DAW button - Vertical Scrollbar - Display transpose value or audio output on change (shortcuts A, S, D) - as temporarily overlay - Dragging notes vertically with hover effect (single notes with CMD/CTRL or whole note layer without any key) - Display of GM drum instruments (or drum instruments/samples from Drumkit) - Save modified files (shortcut CMD/CTRL + S) to folder after change (in save window use shortcuts S, D or C) - Help window to explain functionalities and shortcuts - Added drag n drop of MIDI folders into left panel 'Folder View' ### Status 2025-10-14 - Improved looping (with MIDI-padding which rounds up length to next bar) - Better stability when switching audio output (Plugin in DAW <->Internal Synth<->Drumkit) - Fixed app crash after scanning MIDI files with corrupt headers ### Status 2025-10-09 ### Added - **Folder Management Enhancements** - Remember last added folder location for improved workflow - Persistent folder collapsing status stored in config.json - (Empty) folders with no MIDI files are hidden (configurable in config.json) - More beautiful folder icons - Drag n drop to sort root folders - **User Interface Refinements** - Enhanced Windows Audio Settings with detailed display of audio API and device information - **Development & Distribution** - Apple certificate code signing and notarization support ### Fixes and Features - **Performance Improvements** - Fixed slow NAS folder causing stuttering of progress bar in MIDI generations window - Enhanced handling of slow network drives for better responsiveness - Reduced excessive logging to improve performance - Improved playhead when plugin plays (no rewind animation) - **Playback & UI Fixes** - Duration of MIDI files round to next full bar - improved looping for Drumkit - Fixed files with short notes at the end got stuck - Fixed double-click on row not refreshing playback state of other played rows - Improved state synchronization during file playback - Better playback control state management - MIDI Panic button (shortcut F10) to stop any playback - Keyboard shortcuts A, S, D to switch between audio outputs plugin, synth and drumkit - Zoomed piano roll: keyboard shortcuts arrow up/down to go to next midi file - Fixed click sound in internal synth preset "Piano" at short notes - **Misc** - Fixed some random threading crashes ### Added - **AI-powered MIDI note Generation based on provided MIDI file - Markov Chain algorithm for pattern generation - "Generation Y" algorithm for chord-based compositions - "Shuffle Chords, Drums and Melodies" algorithm with enhanced shuffling logic - "Extract Bass from Chords" algorithm for bass line generation - "Shrink/Expand" algorithm with multiple time ratios (0.1x to 4.0x) - "Swing & Humanize" - "AI: Melody Variation (basic)" based on Google Magenta AI (basic_rnn) - "AI: Melody Variation (from Chords)" based on Google Magenta AI (chord_pitches_improv) - "AI: Generate Piano/Bass/Drums" based on Google Magenta AI (MusicVAE Trio) creating 3-track arrangements with proper coloring - "AI: Generate Drums" based on Google Magenta AI (drum_kit_rnn) - AI Algorithms have "Creativity" slider to configure "temperature" value - Drag and drop generated MIDI files directly into DAW with better naming - Help window with algorithm explanations and usage instructions - **Enhanced DrumKit Support** - New Audio Output: DrumKit with auto-octave-shift functionality - Enhanced sample assignment with "drum compatibility mode" toggle - Drum compatibility support for plugin mode - Master volume slider for DrumKit in Audio Settings - **Improved Piano Roll and Visual Features** - Detail Piano Roll view with zoom functionality - Piano Roll accessible in both right panel and MIDI Generation window - Space bar shortcut for play/stop in Detail Piano Roll - Optimized piano roll for single note patterns - Visual enhancements with horizontal separator lines - **User Interface Improvements** - MidiBro-Generations folder entries displayed with blue tint - Collection "Arpeggios & Sequences" restored - Shortcut key 'cursor right' and 'cursor left' jump playback 10% forward or backward - **Technical Enhancements** - Node.js integration for AI features with binaries (therefore package size is larger) - Threading safety improvements in Ableton Link integration - Windows build support and installer improvements - Enhanced file generation and database storage - Better error handling and crash prevention - Resilient browsing of folders and files from slow drives, e.g. NAS ### Fixed - Threading safety issues in Ableton Link integration - MIDI Generation window loop functionality for internal synth and drumkit - Plugin playback issues in MIDI Generations window - Generated files now properly stored in database - Duration calculation errors in MIDI generation window - DrumKit loop restart timing issues - Switch between synth and drumkit during playback - Various app crash causes eliminated ## [0.2.0] ### Added - Simple internal synthesizer with improved tempo handling and octave changes: no need for plugin in DAW - Ableton Link integration for bi-directional start/stop sync between MidiBro and DAW - Progress bar animation improvements - Timeseek in thumbnail/note pattern - Seamless octave changes - Enhanced detection of files for instrument 'flexible' collections - New collection "Arpeggios & Sequencer" - Performant and graceful handling of slow external drives like NAS - Enhanced key detection with advanced filename analysis and fallback sophisticated algorithms - Folder tree: shows tool tip with full folder path - MIDI Input Pass-Through of plugin (if DAW allows) - GUI right panel layout improvements: - Toggle button positioned closer to left separator - More compact spacing for play controls - Audio mode button renamed from "Plugin" to "Plugin in DAW" - Internal synth with presets (Bass, Piano, ...) - configurable via config.json file - Menu entries: - "Debug logging" to toggle between log levels "INFO" and "DEBUG" - "Full scan" now reports corrupted files and creates a list - "Audio settings" to configure internal synth and Ableton Link - "Shrink Database" removes orphaned entries and optimizes indices - "Reveal folder w/ logfiles..." opens folder with logfiles, database and config.json ### Fixed - Ghost entries showing after folder removal - Removal of folders cleans up database - More robust file scanning with two phases; first phase with progress bar, second phase async in background (see status bar) - Rename or removed files can be updated using Full Scan (from menu) - Star rating or octave change stopped playback - Highlighted entry in central table now has orange font color (better readability) - Menu entry names renamed to be more descriptive ### Know issues - No codesigned app and plugin on MacOS (open installer & app with right click "open" first time); on older macOS plugins are maybe not showing - AU plugin may not work (use internal synth instead) - Sometimes you have to stop/click play after change plugin <-> internal synth - "Reveal File" in Windows just opens folder, file not selected - Thumbail pattern animation: changing tempo with Ableton Link enabled causes a transition phase until tempo is adjusted (wordaround) ## [0.1.0] ### Added - **Core Features** - MIDI file browser with three-panel layout (25%-50%-25%) - SQLite database with connection pooling for concurrent access - Full-text search with < 50ms response time - Virtual scrolling for large datasets (10K+ files) - Thumbnail generation and caching system - Star rating system (0-5 stars) - Smart collections and flexible collections - Logging overhaul with two log levels: INFO and DEBUG - **File Management** - Watched folders with automatic scanning - Background file scanning with progress indicators - Support for folders with 20K+ MIDI files - Metadata extraction from MIDI files (instruments, tempo, etc.) - Recursive subfolder search - **Playback Features** - MIDI playback engine with transport controls - Visual progress bar synchronized with DAW tempo - Drag and drop support to DAW - Multi-file selection with Cmd+Click - **Plugin Integration** - MidiBroConnector VST3/AU plugin for DAW communication - File-based IPC messaging between app and plugin - Automatic plugin detection - Support for Ableton Live and Bitwig Studio - Heartbeat mechanism for connection monitoring - **User Interface** - Keyboard shortcuts (Space bar for play/stop, Cmd+Up/Down, 0-5 for ratings) - Resizable panels with separators - Status bar with file count and scan progress - About dialog with version information - Recent files collection - Collection counts display