# MidiBro Changelog ## [1.7.2] (2026-05-26) ### NEW: Connector Output Channel (multi-instrument routing in your DAW) - Each Connector plugin instance can now send a single MIDI channel (or "All Channels"). Use one Connector per channel to route a MidiStack multichannel set to separate instruments - e.g. Bass to one track, Melody to another. Works in Ableton, Bitwig, and any DAW, no extra tools. (Thanks, Oren and Rick!) - Default is "All Channels", so existing setups play exactly as before. ### Improved - The play button now gently pulses while a file is playing, so it's easier to spot what's playing - in the central table and across all thumbnail previews (right panel, Variations, Drum Mapping, Split MIDI). - Connector: smoother "MIDI Out" activity LED (no more flicker during busy playback) and a tidier output-channel dropdown. ### Bug fixes - MidiStack with Chord Fit: replacing a clip in a pad now updates the pad's visual right away. Previously the pad kept showing the first clip's notes even though the new clip played correctly. The fix also covers swapping pads and switching the active Harmony/Melody variation. (Thanks, Patrick!) ## [1.7.1] (2026-05-19) ### Critical Fix - Empty library after upgrade: fixed silent database migration that left users with previous MidiBro installs seeing 0 files after updating. If you experienced empty Collections, Galaxy, and "0 files in library", this release restores your library automatically on next launch (Thanks, Jeroen!) ### NEW: Unified Settings Window - All settings now live in one window with 5 tabs: Audio, Playback, Library, Maintenance, Support - Cleaner Audio tab with grouped controls and tightened layout - Advanced menu pruned - most entries moved into the new Settings tabs ### NEW: Refreshed Connector Plugin - Cleaner look: logo badge, status pill (Connected / Offline), info panel with file name, playback progress bar, and a "MIDI Out" activity LED - Clear guidance when the plugin can't reach MidiBro: shows "MidiBro app not connected" with a one-click "Open MidiBro App" button ## Windows Installer - Improved the Windows installer to use the `ivoschi` vendor folder for new MidiBro app and VST3 plugin installations. (Thanks for the hint, Lloyd.) - Existing installations keep their current app location, while VST3 plugin paths are migrated safely when needed. - Improved installer reliability: MidiBro is now closed before updating, and the VST3 plugin install is verified so antivirus interference is detected instead of silently leaving the plugin missing. (Thanks, Anniken.) - Drum mapping presets are now checked during packaging, so broken installer builds fail early instead of shipping without presets. ### Bug fixes - Windows: Drum Mapping Window -> "+ Create New Mapping": Fixed the white border around the modal window. ### Behind the scenes - Database access rewrite: 11 read/write paths converted to the connection pool, closing latent races during app shutdown - Galaxy migration safer for partially-upgraded databases (e.g. one Earth coordinate column missing while the other is present) ## [1.7.0] (2026-05-04) ### NEW: MidiStack (Thanks to Judith for inspiration and testing) 4x4 grid for layering up to 16 MIDI files - rows (Drums, Bass, Harmony, Melody) play simultaneously for multi-track sketching and live layering. - Drag files into cells, Auto-Fill rows, or "Send Random Set to MidiStack" from right-click in central table or Galaxy View - "+Variations" per row with Mild/Medium/Wild intensity - dedicated drum-aware subtractive variants for the Drums row - Chord Fit toggle: auto-remap Bass and Melody to the Harmony row's chord tones - Master Tempo sync, Key Shift (Drums bypass), row-level MIDI channel mapping with Smart Filter - Save/load MidiStack Sets, named Presets via Preset Manager, MIDI export of the full arrangement - Per-cell Play/Drag, collapsed strip mode, "Send to MidiStack" buttons in Generate Variations and Split MIDI ### NEW: MIDI Controller Support Trigger MidiStack cells, transport, and file browsing from hardware controllers. - Built-in presets: Akai APC mini mk2, Akai MPD218, Keith McMillen QuNeo, Novation Launchpad - MIDI-Learn: click a control in MidiBro, press a button on your device - done. CC support for faders and knobs - Hands-free file browsing: assign pads/knobs/encoders to Prev File, Next File, Random File, Play/Stop - Hot-plug detection, LED feedback for playback state, built-in MIDI Monitor for troubleshooting ### NEW: MIDI Channel Selection (Plugin in DAW) - Preview and drag-to-DAW on any of the 16 MIDI channels (dropdown in right panel) - Split MIDI: per-part "MIDI-Channel" column to remap each track to a different channel ### NEW: Playback Behavior - Audio Settings (Thanks for the idea, Mark) - Loop option: play MIDI files once or repeat automatically (default: loop) - Focus-loss option: stop playback when switching away from MidiBro ### NEW: File Management - Drag & drop MIDI files into the central panel (copy from Finder, SHIFT+drag to move internal files) ### Improved - Galaxy View: "Reveal in List View" in right-click menu; active filter chip glows softly with a gentle reminder pulse; files in drum-marked folders now cluster in the Drum region instead of staying scattered (thanks Mirko) - Variations: - New "Drum Variation (subtractive)" algorithm with 8 drum-aware variants (Less Hats, No Snare, Skeleton, Rising, Falling ...) - "Extract Bass From Chord" now produces up to 8 distinct bass styles (root, walking, rolling 8ths/16ths, bodzin, lowest, arpeggio, syncopated) - Chord/bass/melody variations are more musical and less repetitive - Plugin Status: status bar shows the connected DAW's name (e.g. "Plugin: Ableton Live") ### Fixes - Search with hyphenated filenames (e.g. "beats_of_berlin-091-chorus") now finds results in "All Files" - hyphens were interpreted as FTS5 NOT operators, silently excluding matches - Accented characters (umlauts, accents) display correctly throughout the app - Removed column filter chips (Type, Key, Tempo, Duration, Genre, Rating) no longer come back after restart or folder switching - Octave +/- on a file row no longer shifts a different file that is currently playing (thanks Miha for reporting) - MIDI files with stray End-of-Track tails (e.g. showing empty space at the end of a note pattern) now use the actual content length - "Locate in Explorer Folder" on Windows now works reliably on the first click - was sometimes only opening on the 2nd try (thanks Tom for reporting) ## [1.6.1] (2026-04-13) - Improved: Type Detection: Better drum and percussion detection for filenames containing cowbell, tambourine, timbale, woodblock, clave, agogo, guiro, cabasa, maracas, djembe, cajon, taiko, surdo, or cuica - Bugfix: List View search results now keep their Type information, so drum files no longer show "-" when the database already has a valid classification - Improved: Galaxy View: Dimmed files are no longer selected when clicking in Galaxy View, making filtered results easier to work with ## [1.6.0] (2026-04-09) ### NEW: Genre Collections (Inspiring idea, Judith) - Organize your library by musical genre (Dance, Hip-Hop, Rock, Pop, R&B, and more) - Multi-genre support: assign multiple genres per file via right-click toggle (e.g. "Rock;Metal") - Batch genre assignment: select multiple files and add a genre to all at once - Genres auto-detected from folder names and file names - Genre Editor with Keywords | Folders tabs — pin specific folders to a genre - Genre Wizard: right-click an Uncategorized chip to assign its keyword to an existing genre - "Uncategorized" smart collection in the left panel — one click to find files without a genre - Genre column in the central table + filter chips in central panel and Galaxy View - Genre collections appear in the left panel alongside Smart Collections - Filtering, collections, and Galaxy View all recognize multi-genre files ### NEW: "Song" Type - Auto-detected for multi-track files with multiple instruments (drums + bass + melody) - Badge colors aligned with Galaxy View for visual consistency ### NEW: Library Report - Generate a full HTML report of your MIDI library from the Advanced menu - Shows genre breakdown, key distribution, tempo ranges, star ratings, and more ### NEW: Rating Filter - Star rating column now supports filter popup — filter by minimum or exact rating ### Improved: Smart Collection Editor - New "Search in File Path" option: match search terms against folder names in addition to filenames (useful for collections like "Trap" that rely on folder structure) ### Improved: Type Classification - Better automatic type detection — fewer files show "-" (empty) in the Type column - Note: some MIDI files remain unclassified when content is too ambiguous - New "-" and "Song" option in Type filter and Set Type dialog for managing unclassified files - Set "Type" via right-click on files, folders, and collections - Column "Type" (drums, melody ...) in the central table with a filter popup ### Improved: Galaxy View Filters - Column filters (Type, Key, Tempo, etc.) now sync between List View and Galaxy View — switching views preserves your active filter - Galaxy scope chip shows filter status: "Collection: X (45/1234)" when column filter narrows a collection - Scope chip uses middle-ellipsis for long names so the count always stays visible - Performance: filter bridge optimized for large libraries (1.4M files: ~50ms instead of ~185ms) - Unified filter panel with piano keyboard key selector, collapsible layout - Galaxy scope chip no longer shows a redundant total file count next to the scope badge - Galaxy View scope badge chip text display not truncated ### Improvements - Recalculate Galaxy now also computes fingerprints and vectors for files that were missing from the Galaxy view (previously only recomputed layout for files that already had vectors) - Collection counts now update in the background — less delays while browsing large libraries - Left Panel top buttons show add/remove folder or collection, context sensitive ### Fixes - Fix: Clicking filter funnel icon in column headers no longer changes the sort order - Fix: Plugin should no longer lose connection when changing instruments on routed tracks in Studio One / Fender Studio Pro (thanks Troy and Judith for reporting) - Fix: Folder scope was stale after async library rebuild or recently-scanned folder navigation ## [1.5.0] (2026-03-26) ### NEW: Split MIDI - Voice Direction (Thanks for the idea, Judith) - "By Chords" split: new Direction dropdown with Bottom Up, Top Down, and Pitch Range - Bottom Up isolates bass/root notes, Top Down isolates melody - per chord, not by fixed pitch zones ### NEW: Galaxy View - Visual map of your entire MIDI library - each point is a file, positioned by musical similarity - Alternative "Grid" visualization mode: snaps files to a discrete grid, forming Minecraft-style block maps - Toggle between Galaxy (organic scatter) and Grid (blocky map) via button in bottom-left corner - Color-coded by instrument category (Drums, Bass, Chords, Melody, Pads, etc.) - Zoom, pan, and click points to preview files directly from the map - Filter by category, key, tempo, rating - dimmed points show filtered-out files for context - Folder & collection filtering: select a folder or collection to highlight matching files in Galaxy - Breadcrumb chip shows active scope with one-click clear button - Category labels at cluster centers (drum subtypes labeled separately) - "Find Similar" from context menu highlights nearest musical neighbors - Hover tooltips with file info and thumbnail preview - Playback pulse animation on the currently playing file - Level of detail rendering for smooth performance with large libraries (100K+ files) - Galaxy layout computes automatically after first scan and updates when files are added ## [1.4.1] (2026-03-20) ### NEW: Update Check - MidiBro now checks for updates on startup and notifies once when a new version is available ## [1.4.0] (2026-03-19) ### NEW: Loop Regions - Set loop start/end markers in the Piano Roll and right panel thumbnail - Drag loop edges to adjust, hold Shift for free-form (non-snapping) drag - Beat-snap: loop markers snap to nearest beat in 4/4 grid - Double-click on loop bar to clear loop markers - Loop regions persist per file across sessions - Loop regions sync between Piano Roll, right panel thumbnail, and Plugin playback - Loop regions are used for dragging (drag button dots look like "L") ### NEW: Split MIDI (formerly Multitrack Splitter) - Three split modes: By Channel, By Drum, By Chords - "By Drum" groups note events by pitch with GM/CSV drum naming - "By Chords" splits notes into 2-5 voices by pitch range (chord divisi) - Voice-range color coding in chord divisi thumbnails and mixer - "By Chords": each voice gets its own MIDI channel (filterable in DAW) - "By Chords": original thumbnail drag exports channel-separated MIDI (respects mute/solo and loop regions) - Auto-detection of best split mode for each file - Source part selector, drum mapping dropdown, voice count combo ### NEW: Playback Speed Control & Master Tempo - Speed chips (0.25x, 0.5x, 0.75x, 1x, 1.25x, 1.5x, 2x) for quick tempo changes - Master Tempo override to play any file at a fixed BPM - Speed setting persists and restores on startup - Works with loop regions and Plugin playback ### NEW: Column Header Filters - Filterable columns for Key, Tempo, and Duration with funnel icons in headers - Click funnel icon to open filter popup with range controls - Preset chips (Slow/Medium/Fast for Tempo, Short/Medium/Long for Duration) - Smart range behavior: filling only one field auto-converts to >= or <= - Filters combine with AND logic and persist in config.json - Active filters shown as chips bar below search with individual removal ### NEW: File Management - Delete File and Rename File in right-click context menu - Multi-select: Delete N Files with confirmation dialog - Change BPM via right-click menu (single and multi-select) - updates metadata only - Import MIDI files via drag & drop onto folder tree (copy from Finder, SHIFT+drag to move internal files) ### NEW: Drum Folder Marking - Mark any folder or subfolder as Drums via right-click context menu - Smart Collections with "Exclude Drums" and Key Collections respect marked drum folders - Drum badge icon displayed on marked folders - Create Random Set: drum-marked folders preferred for Drums category, excluded from Bass/Chords/Melody - "Drums & Percussion" smart collection: includes all files from drum-marked folders - Backward-compatible: works unchanged if no folders are marked as Drum ### Improvements - Space bar play/stop shortcut now works globally regardless of panel focus ### Fixes - Fix: Crash on shutdown from background thread access (use-after-free) - Fix: Favoriting files now refreshes the active Smart Collection immediately; double-click a collection to reload it manually - Fix: Key Smart Collections now match alternate keys in parentheses (e.g. "D min (C# maj)") and metadata recovery now fills missing key/duration values after interrupted background extraction - Empty MIDI tracks no longer pollute instrument metadata: - Instrument metadata extraction now skips tracks with no note events - Prevents DAW template placeholder tracks (e.g., empty "clap", "hihat" tracks) from causing false matches in smart collections - Requires Full Scan to update existing files ## [1.3.0] (2026-01-16) ### NEW: ChordFit (Thanks for inspiration, Mirko) - Map any MIDI melody to a reference chord progression in real-time - Three mapping modes: Nearest Note (snap to closest chord tone), Scale Aware (intelligent scale-based mapping), Root Only (follow chord roots) - Drag and drop exports include ChordFit transformation with suffix in filename - "Use as ChordFit reference" context menu option in central panel - ChordFit toggle icon in right panel thumbnail gutter - With Audio Output "System Synth": two instrument selectors (reference/preview) - Navigate through melody file list with arrow buttons or Up/Down keys (auto-restarts playback) - Help button with explanations ### NEW: Find Similar MIDI-files (Perfect idea, Doug) - Find files with similar musical content from context menu - Five search modes: Melody, Rhythm, Chords, Arpeggios, Combined (melody + rhythm + chords) - Extra columm with similarity score - Context help button explaining similarity function - Fingerprint similarity ranking within each category, extra columm with similarity score ### NEW: Generate Random Set (Excellent idea to roll the dice, Judith) - Create complementary MIDI file sets from any source (reference) file - Generates: 5 drums + 5 bass + 5 chords + 5 melodies and shows reference file - Category badges on thumbnails (REF, DRUMS, BASS, CHORDS, MELODY) - Color-coded rows by category (amber, red-brown, blue, purple, green) - Intelligent key matching: drum files use weighted random key, melodic files use source key - Fingerprint similarity ranking within each category, extra columm with similarity score - Help button explaining Generate Random Set function ### UI Improvements - Notes/Description field in central table (editable inline) and right panel (Good idea Patrick & Cris) - "Copy path to clipboard" in context menus - Recent search terms history (click history button to access last 20 searches) - Force Sync button in Plugin mode to manually re-synchronize playback with DAW position (Good catch, Mirko) ### Smart Collections - New: "Exclude Drums" option to filter out drum files from any collection (hope that it works for you, Mirko & Judith) - New: Term Matching mode (OR/AND) for search terms - OR matches any term, AND requires all terms (great inspiration, Judith) - Built-in collections (Bass, Chord, Melody, Pad, Plucks, Arpeggios) now exclude drum files by default - Key collections (e.g. Key C or Key A#) now exclude drum files (reduced false positives) ### Key Shift (Good catch, Judith) - Added Transpose mode with source key option - user can now chose between Quantize and Transpose mode ### Scanning - New: Tempo extraction from filename patterns - Filename tempo takes priority over MIDI metadata (many files default to 120) ### Fixes - Fix: Key detection false positives for words like "Amide", "Ambient" - Fix: Heap corruption crashes during Full Scan - Fix: Search/similarity results no longer overwritten by background scan - Fix: Folder addition (button and drag & drop) now works during background scan - Fix: Right panel SystemSynth "Instrument" controls now only visible in System Synth mode (not Internal Synth) - Fix: Right panel buttons show icon-only mode when panel width <250px for cleaner narrow layout - Fix: DAW Sync toggles now appear immediately after enabling ## [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