What's New in MIDISketch
Every update, improvement, and fix to MIDISketch, all in one place. Releases are listed newest first, each with its full patch notes and per-OS download links.
.vst3 file. Your license and settings are preserved.v0.9.8 LATEST June 25, 2026
Export modal, Linux support, spectrogram rewrite, CC Lane automation, MPE recording improvements, and critical bug fixes across all platforms.
Windows: Installer · Standalone · VST3
macOS: Installer · Standalone · VST3/AU/CLAP
Export Modal
- Centralized Export Modal: New 3-tab modal (MIDI / Audio / Sketch) accessible via File > Export. All export workflows are now in one place.
- Drag-to-DAW: Drag MIDI files directly from the Export modal into your DAW. Hover the drag zone and drag out to drop into FL Studio, Ableton, Reaper, etc.
- Format Auto-Detection: The modal auto-selects Standard MIDI or MPE MIDI based on your current output mode.
- Export Options: Toggle which expression data to include: Velocity, Pressure, Slide, and Pan (CC10).
- Cleaner Header: The old header export button has been replaced by the unified File menu entry.
Spectrogram / Audio Scan
- Crash Fix for Long Audio: Fixed GPU texture overflow crash when scanning 2–3 minute audio files at 1024 FFT. Textures are now capped and downsampled automatically.
- Memory Safety: Audio scan is capped at ~10 minutes to prevent out-of-memory on huge files.
- Visibility Fix: Spectrogram now appears immediately after analysis completes (no longer requires placing a note first).
- FFT Size Selection: Replaced click-to-cycle with a dropdown menu, no more accidentally rescanning through unwanted sizes.
Color Picker & Expression Colors
- Color Picker Modal Fixes: Fixed bounds overflow; SV square capped at 180px, dynamic height for gradient mode.
- Gradient Preset Names Fixed: 'Cool → Hot' and 'Ice → Fire' now render correctly (was showing broken UTF-8 characters).
- Custom Point Colors: Color picker supports per-point expression coloring.
- Saved Color Designs: Save and recall your custom color designs.
Expression & Automation
- Bezier Handle Persistence: Pressure, Slide, and Pan bezier handles now save/load correctly in .ms and .mpe files.
- CC Lane Paste Fix: Pasting CC automation no longer destroys existing LFOs. Anchor indices are remapped instead of cleared.
- Expression Panel Gap Fix: Fixed 1px sub-pixel gap at the grid boundary in the expression panel.
- CC Automation Lanes: Full serialization support for CC automation lanes.
CC Lane Automation
- Copy & Paste: Ctrl+C/V with time range selection on the CC lane ruler. Copy automation regions and paste at the cursor position.
- Paste Cursor: Left-click the CC lane ruler to set an insertion point for pasted automation data.
- MIDI Learn: Auto-detect incoming CC numbers. Move a knob on your controller and the CC lane switches to that parameter.
- CC Recording: Record CC automation from your MIDI controller in real-time using a lock-free 4096-sample ring buffer for zero-latency capture from the audio thread.
- Simplify: Reduce point density for all or selected CC automation points, using the same Ramer-Douglas-Peucker algorithm as pitch simplification.
DAW Compatibility
- Studio One / Bitwig Fix: Fixed piano key preview not working when transport is stopped. Plugin now reports 10-second tail length so these hosts continue calling processBlock.
- WAV Export Fix: Fixed the Save As dialog only working once per session on Windows 11.
MIDI Trigger Cues
- Per-Cue Loop Duration: Each trigger cue can now have its own loop length (loop within the cue region while the note is held).
- Loop Column in Trigger Dialog: New column with preset bar durations for quick loop setup.
- Trigger Cue Nav Markers: Cue markers now visible in both docked and detached navigation views with note-name pills.
MPE Recording Improvements
- Pooled Voice Architecture: MPE recording now uses a pooled voice system. Per-note expression (pitch bend, pressure, slide) is captured independently for each voice with proper channel allocation.
- Throttled Capture: High-frequency MIDI data is intelligently throttled during recording to prevent performance issues, with Douglas-Peucker simplification applied automatically.
- Polyphony Grace Period: Beat counter reset now uses a grace period to prevent dropped notes during rapid polyphonic passages.
- Playback-Only Recording: MPE recording now requires active playback. Free-running capture is disabled in MPE mode to prevent accidental data.
Synth & Hosting
- Synth Mode Persistence: Built-in synth vs. hosted synth mode and wavetable vs. sampler mode now persist across project save/reload.
- Synth Tab State Restore: Fixed quick start popup showing behind a loaded synth on state restore.
UI & Quality of Life
- Custom Chord Edit/Delete: Right-click custom chord pills to Edit or Delete them in-place.
- Arpeggiator Access: Arpeggiator now accessible from the Extras dropdown context menu.
- Follow/Reveal Visibility: Buttons dynamically hide when the window is too narrow to prevent overlap with other controls.
- Image Overlay Extended Ranges: Position Y range expanded (-20 to 147), Scale range expanded (0.1x–10x) for better spectrogram alignment.
- License Email in Preferences: Masked email display with eye toggle in the Preferences footer.
- Version Number: Now shown in the Preferences footer.
- Navigation Polish: Viewport box clipping and docked mode horizontal-only constraint.
Linux Support
- Linux Builds: GitHub Actions CI now builds VST3 + CLAP + Standalone for Ubuntu 22.04. Packages distributed as .tar.gz artifacts.
- CLAP Plugin: Native CLAP format for Linux DAWs with full MPE support, parameter automation, and state persistence.
- Standalone App: Run MIDISketch without a DAW. Standalone application with built-in synth engine and audio I/O.
v0.9.7.5 June 19, 2026
Audio Unit hosting on macOS, CLAP plugin format, MIDI Trigger system for live performance, smart segment detection, region-aware chop, Mono Bend mode, and more.
Windows: Installer · Standalone · VST3
macOS: Installer · Standalone · VST3/AU/CLAP
Audio Unit (AU) Hosting
- macOS AU Support: MIDISketch can now load Audio Unit plugins alongside VST3 on macOS. AU instruments show up automatically from /Library/Audio/Plug-Ins/Components.
- Format Badges: AU plugins display an [AU] badge in the synth browser to distinguish from VST3.
- Smart Deduplication: When both VST3 and AU versions exist, VST3 is preferred (better MPE support) while AU remains available.
- Scan Path Management: Adding or removing scan paths now triggers an immediate full rescan with UI refresh.
CLAP Plugin Format
- Native CLAP Build: MIDISketch now ships as CLAP in addition to VST3, AU, and Standalone. Bitwig users get native CLAP support with better parameter handling and MPE compatibility.
- Cross-Platform: CLAP included in the Windows installer (Common Files/CLAP) and the macOS notarized .pkg bundle.
MIDI Trigger System
- Trigger Cues: Up to 8 trigger cue points, each bound to a specific MIDI note. ANY KEY mode triggers on any note, All Octaves binds to a note name across all octaves. MIDI Learn for instant binding.
- Cue Markers on Ruler: Per-cue colored diamond markers in the piano roll ruler. Click to select, drag to reposition (snaps to grid, Alt for free). Ghost markers persist when dialog is closed.
- Playback Behavior: Note-On starts playback from cue position, Note-Off stops. Loop While Held keeps the sequence looping. Multiple trigger keys can be held simultaneously.
- Auto / Trigger Toggle: Switch between Auto (DAW transport) and Trigger (MIDI-driven) modes directly in the playback bar with quick access to Trigger Setup.
Bug Fixes (v0.9.7.5)
- Stuck Note Prevention: Map-based held tracking replaces atomic counter, self-correcting every audio block. Preview channel isolation, CC123 safety valve on stop, clean state reset on mode switch.
- Chord Scroll Crash: Fixed crash when scrolling chord families with an empty chord list.
- Mode Onboarding Crash: Fixed crash when clicking buttons in the mode onboarding dialog.
- Stamp Preview Expression: Preview now sends MPE expression (pressure, slide, pan) before note-on so the synth receives the correct state.
Smart Segment Detection
- Segment vs Whole Note: Chop & LFO tools now intelligently distinguish between targeting a single segment vs the entire note. Exactly 2 adjacent points = segment, 3+ points or all selected = whole note (0.0–1.0).
- Unified Across All Paths: Adjacency check works in all 6 invocation paths: Ctrl+K, Ctrl+Shift+K repeat, right-click menu, L hotkey, Ctrl+L hotkey, and Extras menu.
Click-and-Hold → Whole Note
- Hold 250ms: Clicking and holding on a segment transitions to whole-note selection after 250ms. All points selected, bounding box appears, cursor changes to drag hand. Release + Ctrl+K/L targets the whole note.
- Re-click Clears: After hold-select shows the bounding box, clicking the same note again clears it and re-enters segment mode.
Region-Aware Chop
- Partial Note Chopping: Only the selected segment gets chopped while head and tail segments are preserved. Slices render within region boundaries, baseline overlay draws only within the chop region.
- Smart Bake: quickApplyChop() emits separate head/tail notes preserving the original pitch curve. Slice positions remapped from local [0..1] to note-space.
- Data Model: ChopSettings now stores regionStart and regionEnd (default 0.0–1.0), persisted via JSON serialization.
Timer System Fixes
- Timer Self-Stop: timerCallback() keep-alive now includes liftHoldPending and pointClickStartMs flags.
- Timer Restart: startTimer(33) now called when lift mode activates.
- Clock Mismatch (Critical): Fixed: liftHoldStartMs used getMillisecondCounter() (~100K ms) but mouseUp compared against currentTimeMillis() (~1.7 trillion ms). Now uses getMillisecondCounter() consistently.
- Drag Threshold: Hold timer only cancels when drag distance exceeds 3px, preventing subpixel movements from killing the 250ms hold.
Rhythm Mode Gap Fix
- Gap Rendering: Rhythm mode chop now uses chop.evaluateGapAt() for gap evaluation instead of hardcoded 0.0. Gap slider and gap-over-time envelope visually match the audio engine.
Mono Bend Mode
- Non-MPE Synth Support: New output mode: Standard MIDI (Mono Bend). Plays all notes on MIDI channel 1 with pitch wheel automation tracking the newest active note's pitch curve. Works with Omnisphere, Kontakt, Massive, Sylenth1, Phase Plant, Pigments, Serum (non-MPE mode), and any other synth.
- Configurable Bend Range: ±2, ±12, ±24, or ±48 semitones. Must match your synth's pitch bend range setting.
- Sub-Block Pitch Interpolation: 16-step-per-block smoothing. No zipper noise, same quality as MPE mode.
- MIDI Export: Drag-and-drop export writes pitch wheel CC events (not note splits) when in Mono Bend mode.
- Auto-RPN Messages: Automatically sends RPN 0 at playback start to configure the synth's pitch bend range.
Mode Onboarding
- First-Launch Chooser: Mode chooser dialog on first launch. MPE vs Pitch Wheel cards with feature bullets and synth compatibility lists. Choice is remembered, resettable from Preferences.
Rhythm Chop Upgrade
- Speed Envelope: Speed envelope now works in Rhythm mode. Draw acceleration/deceleration curves over chopped sequences.
- Phase-Accumulation Tiling: New tiling algorithm for seamless rhythm patterns with 0.1x–8x rate slider.
- Preset Browser: Built-in presets: 8ths, 16ths, Swing, Triplet. Instantly apply common rhythm patterns.
- Custom MIDI Rhythms: Load custom rhythm patterns from .mid files for unique chop sequences.
Custom Chord Creator
- 2-Octave Piano Keyboard: New Stamp Tool modal with interactive 2-octave keyboard for interval selection. Draggable panels, allow-inversions toggle.
- Persistent Custom Chords: User-created chords are saved to settings.json and persist across sessions. Right-click to delete.
Pitch Wheel Mode: Stability
- Preview Routing Overhaul: Mode-aware preview channels: MPE mode routes ch16→ch2, Pitch Wheel mode routes ch16→ch1. Preview safety filter prevents preview note-off cleanup from killing active playback voices.
- Mode-Aware Panic/Stop: Panic and stop handlers now target the correct remap channel (ch1 or ch2) instead of hardcoded defaults. No more ghost notes after mode switches.
- Pitch Wheel Center Reset: When the last active mono voice ends, pitch wheel is explicitly reset to center (8192) on ch1, preventing stale bend values from causing silence or pitch glitches.
- Session State Reset: Switching between MPE and Pitch Wheel mode triggers a clean engine reset, clearing MCM/PBR flags and mono expression trackers.
- MCM Messages: Hosted synth receives explicit MIDI Channel Mode messages on mode switch: 15 member channels for MPE, 0 for Pitch Wheel.
- PBR Re-send: Modifying pitch bend range within the same mode forces the Pitch Bend Range RPN to re-send on next playback.
Razor Slice: Auto Align
- Auto Align Right Segment: When you slice a note with the razor tool, the right-side segment now automatically runs Align Note-On, shifting its note number to match the pitch at the cut point. Notes snap to the correct piano roll row.
MIDI Routing Dialog
- Single Source of Truth: Removed redundant PBR from Preferences. MIDI Routing is now the single source of truth for pitch bend range, grouped alongside the output mode selector.
- PBR Persistence: Changes to pitch bend range in MIDI Routing are now saved to settings.json.
- Improved Instructions: Yellow callout: 'Match this value in your synth's pitch bend settings'. Dynamic explanation and Serum-specific example.
Expression Simplify
- Cmd/Ctrl+Q in XYZ Editor: Expression point simplification (Ramer-Douglas-Peucker) now works in the MPE XYZ editor for Pressure, Slide, and Pan lanes. Same algorithm with configurable tolerance.
Synth Init Presets & Guides
- Auto-Load Init Presets: Serum 1, Serum 2, and Vital auto-load MPE-configured init presets when hosted. No manual setup required. MonoBend-aware: skips MPE init in Standard mode.
- Zenology Setup Guide: The ? button for Zenology/Zenology Pro now shows Pitch Wheel-specific steps instead of generic 'No MPE support'. Context-aware header detects non-MPE synths.
Gamepad Support
- Experimental Controller Input: Windows-only gamepad support with hold-to-drag cursor for note placement. Xbox, PlayStation, and generic controllers supported. Zero impact if no controller connected.
Pitch Bend Clamping
- Hard Clamp on Drag: Pitch points are now clamped to ±bendRange semitones during all drag operations. Applied in all 3 paths: single point, multi-point extend, and group delta move.
Startup Performance
- Deferred Plugin Restore: VST3 plugin loading on project restore is now deferred via callAsync. UI renders immediately while heavy synths (Zenology, Kontakt) load in background. Eliminates 2–5 second freeze.
Bug Fixes
- Bake Crash Fix: Fixed use-after-free crash when baking expression LFOs to points.
- Bake Stack Overflow: Fixed stack overflow on dense curves during bake operations.
- Rhythm Preview Doubling: Fixed doubled notes in rhythm chop preview playback.
- Expression LFO Flatline: Fixed initial flatline when adding expression LFOs to notes.
- LFO Edit Lane Mismatch: Fixed expression LFO editing targeting the wrong lane.
- Status Bar Modal Fix: Status bar now properly hides behind all editor-level dialogs (MIDI Routing, Mode Onboarding, MPE Guide).
v0.9.7 June 16, 2026
Expression panel overhaul, Stamp Tool bass & arp, MIDISketch Link (cross-instance collaboration), automatable Play Trigger, camera shake & smoothing, and visual polish.
Windows: Installer · Standalone · VST3
macOS: Installer · Standalone · VST3/AU
Expression Panel Overhaul
- Moved to Bottom Panel: The entire MPE expression system (Pressure, Slide, Pan) is now integrated into the bottom panel as tabbed views. No more floating X-button overlay. Four tabs: Velocity | Pan (X) | Slide (Y) | Pressure (Z).
- Full-Range Curve Editing: Expression curves use proper automation points and bezier handles, matching the pitch curve editing UX.
- Inline LFO on Expression: Right-click between two expression points to add an LFO, applying sine/triangle/saw/square modulation to that region. Non-destructive: stored as ExpressionLFOSettings, editable or deletable via right-click.
- Bake to Points: Convert any expression LFO waveform into editable automation points with bezier handles. Permanent, fine-grained control.
- Expression Ruler Bar: Dedicated ruler between the header and curve area for time selection, paste cursor placement, and range copying (Ctrl+C/V).
- Snap Toggle & Resizable Panel: Per-panel snap button for grid alignment. Drag the top edge to resize the expression panel height, persisted across sessions.
- Expression Point Simplification: Ctrl+Q on expression points runs the same intelligent simplification as pitch points, with flat-section detection and broken bezier handle cleanup.
- Contextual Tooltips: Dynamic status bar hints change based on selection state. Shows available actions for selected points, empty curves, or ruler interactions.
Stamp Tool: Bass & Arp Mode
- Bass Mode: Toggle adds the chord's root note one octave below. Creates bass+chord arrangements in a single click/drag.
- Arp Mode: Stamps an arpeggiated sequence instead of a stacked chord. Configurable rate (1/1–1/32), note type (Normal, Dotted, Triplet), pattern (Up, Down, Up/Down, Random), and gate percentage (5–100%).
- Bass in Arp: Option to include the bass note in the arp sequence.
- Live Arp Preview: Hold Space on stamp placement to hear the arp sequence play in real-time through the synth engine.
- Enlarged Stamp Panel: Redesigned to accommodate Bass/Arp controls with clear organization and modifier hints (Shift+Scroll).
MIDISketch Link: Cross-Instance Collaboration
- Ghost Notes from Other Instances: Open multiple MIDISketch instances in the same DAW and see each other's notes as translucent ghosts in real-time. Full pitch curves with shadow, not flat rectangles.
- Floating Link Panel: Button (bottom-right, above ?) shows all connected instances with note counts and pitch-accurate mini thumbnails. Instance badge shows active count.
- Per-Instance Eye Toggles: Vector-drawn open/closed eye controls ghost visibility per instance independently.
- Drag-to-Merge: Drag any instance thumbnail onto the canvas to merge all its MPE notes (pitch curves, pressure, slide, pan, LFO, colors) into your current instance. Fully undoable.
- Zero-Lag Architecture: In-process shared memory. No file I/O, no networking. Live-updating every ~500ms. Works in FL Studio, Ableton, Logic, Reaper, Studio One.
Automatable Play Trigger
- DAW Automation Parameter: New 'Play Trigger' VST3 parameter appears in every DAW's automation lane list. Draw clips to fire MIDISketch phrases at multiple points in your arrangement.
- Gate Mode with Restart: Rising edge (0→1) starts playback from beat 0; falling edge (1→0) stops with clean note-offs.
Camera System
- Camera Settings Modal: New floating modal with follow smoothing slider (0–100%), right-click-follow toggle, and camera shake amount slider.
- Camera Shake: Perlin noise-based handheld shake effect during playback follow. Adjustable intensity, persisted in settings.
- Hide Ghosts During Playback: New preference to suppress ghost note overlays during active playback.
Visual Polish
- Updated Pitch Point Rendering: Improved rendering of pitch control points and bezier handles throughout the editor.
- Bezier Handles on Chopped Notes: Chop sub-notes now display their pitch curve bezier handles (previously hidden).
- Chop Max Increased to 64: Previously capped at 32 subdivisions, now allows up to 64.
- Runner Sprite Glow: The animated runner character in Quick Start now has a subtle glow effect.
Bug Fixes
- Ghost Note Timing Fixed: Linked ghost notes now use beatToX()/noteToY() coordinate helpers, eliminating the 1-bar → 1.33 position drift.
- Shared Static Counter Fixed: Timer poll counter for Link was accidentally shared across all instances; now properly per-instance.
- Expression Panel Tab Bounds: Fixed expression panel not showing correct bounds when switching between Velocity and MPE tabs.
- Grid Clipping: Ghost notes clipped to grid bounds. No bleed into piano keys or header area.
- CI Fix: Cleaned stale CMake generator cache for VS 2022 → 2026 upgrade compatibility.
v0.9.6 June 2026
QWERTY-to-MIDI keyboard, full shortcut rebinding, multi-point drag overhaul, MPE scale lock, 7 improved dialogs, and 79 commits of new features & polish.
Windows: Installer · Standalone · VST3
macOS: Installer · Standalone · VST3/AU
Customizable Keyboard Shortcuts
- Full Rebindable Shortcut System: Reassign any tool or action key with real-time conflict detection. Modifier rebinding: Ctrl/Cmd, Alt, Shift reassignable for modifier actions like Highlight Select and Add Pitch Points.
- Tabbed Shortcuts UI: New 'Keys' and 'Modifiers' tabs in settings with live rebinding, conflict warnings, and Reset to Default.
- Dynamic Key Display: All menus, tooltips, help overlay, and context menus automatically update when shortcuts are rebound.
- Persistence: All shortcut and modifier bindings save to settings.json and survive restarts (standalone + plugin).
QWERTY-to-MIDI Keyboard
- Computer Keyboard as MIDI Input: Play notes using a 4-row chromatic piano layout (Z–M = lower octave, Q–P = upper). Each key gets its own MPE channel (2–15) for true polyphonic expression.
- Visual Keyboard Dialog: Shows note names, key labels, and live highlights with proper layout. Octave controls via -/+ keys (0–8 range), kills active notes on shift.
- Recording Support: Notes from the computer keyboard are recorded into the piano roll when armed. Pressed notes visually highlighted on the piano key strip.
Multi-Point Drag Overhaul
- Rewritten Drag Engine: Direct position-set from original snapshot positions, eliminating compounding/acceleration bugs that plagued multi-point editing.
- Horizontal Group Movement: Dragging multiple selected pitch points now moves them freely without neighbor clamping.
- Left-Extend Support: Dragging the first point leftward properly extends the note start.
- Grid Snap Fix: Multi-point snap uses original anchor position, not accumulated delta.
New & Improved Dialogs
- Strum Dialog (G): Quick-apply hotkey applies last settings instantly. Direction options (Up, Down, Random), Maintain Length toggle, and full undo support.
- Detuned Unison Dialog (U): Drawable depth envelope canvas with bezier curve support. Generated unison voices copy bezier handles for smooth curves. Accessible from extras dropdown, right-click menu, and help overlay.
- Ramp Dialog Improvements: End+Extend mode appends ramp after existing content. Randomize Depth toggle with per-note variation and New Seed button. Proper anchor points prevent pitch discontinuity. All code paths fixed: dialog preview, Apply, and quick-apply (Ctrl+R) all handle every mode correctly. Full undo support.
- LFO Generator Improvements: Segment-scoped LFO: clicking a pitch segment auto-selects bounding points, so L/Ctrl+L applies LFO to that segment only. Auto-anchor creation on bare notes. Alt+click bezier in ALL draw dialogs. Full undo support.
- Join Settings Dialog (Ctrl+J): Configurable transition length with 1/16th and 1/8th options in 2-row button layout. Randomize toggle for random length within a min/max range. Ctrl+Shift+J cycles between presets.
- Scale Highlight Dialog: Scale selection popup from extras dropdown with live preview. 'Keylock' renamed to 'Lock to Scale' for clarity.
Chop Generator (NEW)
- Non-Destructive Note Slicing: Chop any note into 2–32 slices with adjustable gap. Chop settings are stored per-note as metadata. The original note is preserved, and slices are expanded at playback time.
- Speed Curve Canvas: Draw a speed envelope to control the time distribution of slices (accelerating, decelerating, or custom rhythmic patterns).
- Gap & Follow Curve: 0–90% gap between slices for staccato stutter effects. Follow Curve mode inherits pitch from the original note at each slice position; when off, slices use base pitch.
- Save vs Bake Workflow: Save stores chop settings non-destructively; re-open the dialog anytime to tweak. Bake destructively splits into actual separate notes for individual editing of each slice's pitch, velocity, and timing.
- Re-Editing: Right-click a chopped note → Chop to re-open the dialog with previously saved settings.
- Bake Stability: Resolved crash when baking standard (non-MPE) MIDI notes; added defensive checks for missing pitch point structures.
Scale Lock for MPE
- Two-Tier Scale Lock System: Standard mode forces integer-semitone snapping to in-scale rows. Hold Ctrl/Cmd for microtonal adjustment while still preventing movement into non-scale 'dead zone' rows.
- Applied Everywhere: Works consistently across single point drag, multi-point group drag, segment lift, brush/sketch tool, and shift+click point placement.
Brush & Perform Tool
- Right-Click Pitch Lock (Brush): Hold right-click while painting to lock pitch to the nearest whole note row. Uses getCurrentModifiers() for reliable multi-button detection during left-click drag.
- Perform Tool Count-In: Space in Perform mode plays 4 metronome clicks at project BPM before starting playback.
- Perform Shift-Lock: Hold Shift during perform recording to snap pitch to nearest integer note row.
- Brush Live Playback: Brush tool now has live audio preview matching the perform tool.
- Stroke Finalization Fix: Right-click release no longer prematurely finalizes brush strokes.
Recording Improvements
- Pre-Recording Held Note Capture: MIDI notes held before recording starts (e.g., during countdown) are now properly captured, placed with their start at the playback start beat. Works for MIDI keyboards, MPE controllers, and PC keyboard input.
- Loop-Wrap Recording: Held notes across loop boundaries are properly finalized at loop end and restarted at loop start.
Note Placement Improvements
- Strict Hit-Test for Pencil: Pitch curves no longer block note placement on rows where the base note moved away.
- Scale Lock on Placement-Drag: Notes placed via pencil tool now respect Lock to Scale during the initial drag.
- Copy Pitch / Paste Pitch: Added to all 4 right-click context menus. Copies sounding pitch (base + offset) for cents-accurate transfer.
Live Analysis
- Real-Time Chord Detection: Status bar shows current chord during playback. MPE pitch-curve-aware with 24 chord patterns.
- Rolling Key Prediction: Top 3 detected keys with confidence percentages. Key detection sampling fix: samples at pitch points instead of mid-ramp positions for accuracy.
UI & UX Polish
- Grid Settings Dropdown: Replaced Q/T toggle with a proper dropdown menu containing Grid Division, Ramp, LFO, Strum, Join settings.
- Platform-Aware Text: All tooltips, Quick Start tips, help overlay, context menus, and status bar now show 'Cmd' on Mac / 'Ctrl' on Windows.
- Auto-Expand Timeline: New preference toggle (OFF by default). When off, timeline only grows via high-water mark.
- Trackpad Scroll Speed: New Preferences slider (1.0x–5.0x) with non-linear acceleration curve.
- Extras Dropdown Cleanup: Removed 'Add' prefix from Ramp, LFO, Chop, Unison for faster scanning. Perform tool hotkey (T) assigned.
- Help & Dialog Scaling: 2x scaled shortcut rows (14pt fonts, 32px rows). Ramp (1.5x), Join (1.6x), Customize Shortcuts (2.5x) all scaled for readability.
State Persistence
- Full UI State Saved: Tool mode, expression lane, grid settings, visual modes, ramp/strum/join settings, note length, keyboard octave all persist across close/reopen.
- View Position Persistence: Scroll position, zoom level, scale lock, interval predictor, and join settings all saved.
- State Restoration Fix: Processor state now restored in constructor before timer starts, preventing default values from stomping saved state on editor recreate.
Synth Browser Stability
- Fixed Freeze on Deep Scan: Scanner moved to processor, removed DLL loading, added SafePointer protection. Deep scan confirmation dialog warns before starting.
- Auto Quick Scan: Automatically scans on first tab open. Fixed quick scan incorrectly removing existing plugin entries.
Bug Fixes
- Ghost Note Fix: Fixed ghost notes spanning entire loop when recording stops.
- Toolbar Focus Fix: Fixed toolbar buttons stealing keyboard focus from piano roll.
- Set Pitch Octave Fix: TuningEngine used wrong octave offset; now corrected.
- Right-Click Empty Space: No longer incorrectly pops context menu; properly deselects instead.
- Align Note-On Fix: Fixed for Point tool and multi-selection.
- Join Ramp Fix: 1/16th join ramp no longer eaten by dedup threshold.
- Shortcut Safety: Unbound shortcuts no longer match Delete or non-text keys.
- Arpeggiator MPE Fix: Now live-adjusts to settings changes in MPE mode.
- Piano Key Display: Fixed holding last notes instead of showing live-playing notes.
- Pitch Point Drag Fix: Cleared stale segment selections preventing drag regression.
- macOS Build Fix: CoreGraphics include for perform tool CGEvent APIs.
- startMidiAtBar Persistence: Fixed persistence across state reloads.
- Version Parser: Now handles 4-part versions (major.minor.patch.build).
v0.9.5 June 2026
Live chord & key analysis, copy/paste pitch, Mac Cmd parity, undo reliability, ramp tools, and 90+ commits of polish.
Windows: Installer · Standalone · VST3
macOS: Installer · Standalone · VST3/AU
Live Chord & Key Analysis
- Real-Time Chord Detection: Status bar displays the current chord name during playback. Fully MPE pitch-curve-aware, evaluating sounding pitch, not just base notes.
- 24 Chord Patterns: Recognizes major, minor, diminished, augmented, 7ths, 9ths, sus2/sus4, and more.
- Rolling Key Prediction: Top 3 most likely keys displayed with confidence percentages, based on notes played in a configurable window.
- Key Analysis Window: Choose 1, 4, 8, 16, or 32 bars in Settings (persisted across sessions).
- Enharmonic Deduplication: Intelligently merges equivalent keys (e.g. B major / Gb major) for cleaner results.
Copy & Paste Pitch
- Copy Pitch / Paste Pitch: Added to all right-click context menus: note body, pitch segments, and individual pitch points.
- Works Everywhere: Works across Pencil, Point, Highlight, and Brush tools.
- Cents-Accurate Transfer: Copy stores the exact sounding pitch (base note + pitch offset) for precise transfer.
- Multi-Select Paste: Paste to multiple selected notes or points at once.
Undo/Redo Reliability
- Dialog Undo Fix: Fixed undo for Strum, Ramp, and LFO dialogs. Ctrl+Z now correctly reverts to the pre-dialog state instead of the live preview state.
- Set Pitch Octave Fix: Set Pitch on pitch points no longer shifts by 2 octaves due to mismatched octave conventions.
Input & UX
- Mac Cmd/Ctrl Parity: All modifier shortcuts now use Cmd on Mac (21+ call sites updated). Tooltips, menus, and status bar all platform-aware.
- Right-Click Deselect: Right-clicking empty piano roll space now clears point/note selection instead of showing a context menu.
- Perform Count-In: Space in Perform mode plays 4 metronome clicks before starting playback.
- Perform Shift-Lock: Hold Shift during perform recording to snap pitch to nearest note row.
- Trackpad Scroll Acceleration: Non-linear curve for smooth trackpad scrolling with configurable speed (1.0x–5.0x in Preferences).
- Auto-Expand Timeline Toggle: New Preferences option to prevent disorienting zoom shifts.
- Brush Tool Selection: Cmd/Ctrl+click in Brush tool now toggles note selection, matching Pencil tool behavior.
- Shift+Alt Unsnap: Bypass beat grid during Alt+drag note length adjustment.
Ramp & Simplify Tools
- Ramp End+Extend Mode: Extends note at the END by ramp time, appending the ramp after existing content.
- Ramp Anchor Points: Proper t=0 start anchor and junction anchors prevent pitch discontinuity at boundaries.
- Simplify Flat Detection: Segments with <0.08st pitch variation get perfectly straight lines with zero bezier handles.
- Simplify Broken Handles: Flat-to-curved transitions now have independent handles (flat side stays straight).
UI Polish
- Status Indicator Alignment: Playback status dot and text vertically centered in the header row.
- Platform-Aware Tooltips: All Quick Start tips, Help overlay, and panel tooltips show 'Cmd' on Mac / 'Ctrl' on Windows.
Bug Fixes
- Ghost Note Fix: Fixed ghost notes spanning entire loop when recording stops (cleared stale pending notes on disarm).
- Toolbar Focus Fix: Fixed toolbar buttons stealing keyboard focus from piano roll (Record/Play/Sound/Metronome now non-focusable).
- macOS Build Fix: Fixed macOS build failure (missing CoreGraphics include for perform tool count-in).
- Version Parser: Now handles 4-part versions (major.minor.patch.build).
v0.9.4 June 2026
Complete Synth Browser redesign, 170+ synth database, loop recording fix, voice stealing fix, and 80 commits of polish.
Windows: Installer · Standalone · VST3
macOS: Installer · Standalone · VST3/AU
Synth Browser Redesign
- 4-Tier Classification: Plugins now sorted into MPE Compatible (green), Basic MIDI Only (yellow), Unknown (grey), and Not Compatible / Effects (red). Instant visual clarity on what works.
- 170+ Synth Database: Massive expansion with specific MPE setup instructions for each synth: Serum 2, Vital, Pigments, Phase Plant, Surge XT, Diva, Hive 2, Falcon, Pianoteq, Avenger, SynthMaster, and many more.
- Quick Scan + Deep Scan: Quick Scan instantly checks known paths (sub-millisecond). Deep Scan walks all directories on a background thread with progress feedback. Results are cached across sessions.
- Per-Synth MPE Guide: Click the colored ? button next to any synth for a styled popup with step-by-step MPE setup instructions specific to that synth. Color-coded: green = ready, yellow = needs setup, red = no MPE.
- Automatic Effect Detection: Effects auto-classified via moduleinfo.json categories or JUCE's VST3 scanner, keeping the synth list clean.
- Subdirectory + Dedup: Quick Scan finds plugins inside manufacturer subfolders. Duplicates from multiple scan paths are properly deduplicated.
MIDI Recording
- Loop-Point Recording Fix: Holding a note across a loop boundary now correctly creates two clean note segments: one ending at the loop point and another starting at the loop restart. Previously produced tiny sliver notes or missing data.
- MPE Loop Recording: Same loop-point fix applies to MPE recording. Pitch, pressure, and slide all preserved across loop boundaries.
- Perform Tool Loop Fix: Notes drawn with the Perform tool while the playhead loops now commit properly at the loop end instead of producing zero-length notes.
Built-in Synth & Sampler
- Master Tune Knob: Global tuning control added to the built-in synth.
- Phase Knob: Per-voice base phase randomization prevents phase-locking between MPE voices.
- Gain Staging: Default synth level adjusted to -6dB with a transparent soft-knee clipper, preventing harsh digital clipping.
- Sampler Panel Redesign: Matches synth panel background, bezel, and grid styling. Fixed text overlap and toggle positioning.
Parameter Mapping Strip
- Complete Layout Redesign: Synth name + MPE guide on the left, param controls clustered on the right, MIDI OUT + New Synth on the far right.
- New Synth Button: Red-styled destructive action button with 'Are you sure?' confirmation dialog to prevent accidental synth unloads.
- MIDI OUT Routing: Clickable status indicator moved to param strip. Shows ON/OFF state with accent glow.
- Parameter Help: Styled multi-step automation guide replacing system AlertWindows with themed MpeGuideDialog.
Pencil & Stamp Tools
- Alt+Drag Note Length: Pencil tool now uses Alt+Drag to set note length (previously Shift+Drag). Becomes the default length for future notes.
- Hold-Space Chord Preview: Hold Space for 300ms+ to preview the chord under the stamp. Tap Space for playback as before.
- Stamp Preview Channels: Preview notes use dedicated channel 16, avoiding collisions with the MPE engine's voice allocation during loop/chase.
Tools & UX
- Right-Click Note Lock: Brush and Perform tool pitch-lock modifier changed from Shift to Right-Click. Frees up the left hand for other controls.
- Esc = Stop All Notes: Added to pencil tooltips, help overlay, and Quick Start tabs.
- Join Dedup Fix: Ctrl+A then J no longer merges user-placed pitch points that are close together.
Performance & Stability
- Voice Stealing Fix: Sends proper note-off + pitch reset before reusing a stolen MPE channel, preventing stuck notes in hosted synths when all 14 voices are occupied.
- Debug Logging Removed: DEBUG_LOGGING_ENABLED removed from Release builds, eliminating the background file-writer thread and ~100ms flush overhead per block.
- Native HWND Management: Uses Win32 ShowWindow for hosted editor hide/restore instead of removeFromDesktop (which broke re-attachment in some DAWs). Mac falls back to setVisible.
- macOS Entitlements: Added proper code signing entitlements for macOS builds.
UI Polish
- Synth Quick-Start Modal: New three-section design: MPE Compatibility, Built-in Synth & Sampler, and MPE Input & Output. Smooth fade-in animation.
- MPE Guide Dialogs: Dark themed modal cards with numbered steps, accent circles, and word-wrapped text. Replaced all system AlertWindows.
- Parameter Automation Popup: Wider card (540px), 15pt step text, proper comma-delimited parsing for multi-step instructions.
- Default UI Scale: Changed to 100% (was previously larger).
v0.9.3 June 2026
Smart Keylock, Playhead-Aware Stamp Preview, vertical zoom anchoring, and chord engine rewrite.
Windows: Installer · Standalone · VST3
macOS: Installer · Standalone · VST3/AU
New Features
- Smart Keylock: New Keylock toggle in the Scale Highlight settings panel. When enabled, all new note placement is constrained to in-scale notes: Pencil, Stamp, Note Drag, and Shift-Duplicate. Uses an intelligent tiebreaker when equidistant: Root → 5th → 3rd → other scale tones. Existing out-of-scale notes are untouched.
- Playhead-Aware Stamp Preview: Space in Stamp tool now arms a playhead-aware chord preview. Ghost notes only play when the playhead crosses their position, so you hear the chord exactly in context. Move the mouse while sounding to retrigger at a new pitch in real-time. Scroll wheel swaps chord type live (Maj ↔ Min ↔ etc.).
- Stamp Tool Defaults: Stamp note length now defaults to 1 bar (4 beats) instead of 1 beat for more musical initial placement.
Improvements
- Vertical Zoom Anchoring: Ctrl + middle-mouse drag vertical zoom now anchors at the mouse click position instead of the top edge. The note under your cursor stays in place while zooming, matching the behavior of horizontal zoom.
- Settings Panel Positioning: Join / Scale Highlight / Ramp settings panel and the Quick Start ? button now sit above the velocity panel and status bar. No more overlap with bottom-edge tooltips.
- Status Bar: Widened status bar to prevent long tool hints from being clipped.
- Tooltip Fix: Quick Delete mode bottom-left hint now correctly says 'RClick: Erase | Hold RClick: Menu' (was 'RDrag: Erase').
Bug Fixes
- Stamp Chord Preview Engine Rewrite: Replaced pitch-bend sliding with clean voice retrigger system, fixing inverted pitch behavior when moving mouse, phase cancellation between voices, and scale lock mismatches during preview.
- Timer Auto-Stop Fix: The piano roll's internal timer was stopping itself during playback, preventing the stamp preview monitor from running. Fixed to keep alive when stamp preview is armed.
- Pitch Bend Reset on Preview Stop: All preview channels now receive explicit pitch wheel reset on note-off, preventing stuck pitch offsets.
v0.9.2 June 2026
MPE MIDI Recording, Undo/Redo buttons, Sound/Mute toggle, Follow Wind-Up, Simplify Selection, Point Tool overhaul, UI Scale, and 25 files of improvements.
New Features
- MPE MIDI Recording: Record incoming MPE pitch bend, pressure (aftertouch), and slide (CC74) as pitch/expression curves directly onto notes. Configurable pitch bend range for accurate recording. Accessible from File menu → Record MPE Controller.
- Undo / Redo Buttons: New Undo and Redo buttons in the header bar with game-style bevel design. Grayed out when unavailable. Keyboard shortcuts still work: Ctrl+Z / Ctrl+Shift+Z.
- Sound/Mute Button: New speaker icon in the header to toggle audio output on/off. Green speaker with sound waves when on, red with X strike-through when muted. Replaces the old 'M' pill and Output row in playback settings.
- Follow Wind-Up (Playback Offset): New setting in Preferences. When Follow mode is enabled, playback starts a configurable amount earlier than the playhead. Options: 0, ¼ beat, ½ beat, 1 beat, 2 beats, 4 beats (1 bar).
- Synth Section Quick Start Modal: First-time overlay when opening the Synth tab explaining the built-in synth and hosted plugin sections. 'Don't show again' checkbox. Only appears once per session.
- Simplify Selection (Point Tool): Right-click 3+ selected pitch points → 'Simplify Selection...' applies RDP simplification only to the selected range. Live preview slider with Catmull-Rom bezier handle fitting. Cancel restores original.
- Waveform Canvas Flip: Flip Vertical and Flip Horizontal for drawn waveforms in the synth's waveform editor.
Improvements
- Point Tool UX Overhaul: Click+drag on pitch points now moves them (was previously creating bezier handles). Alt+click / Middle-click creates/toggles mirrored bezier handles. Click+drag on note body moves the note. Hand cursor on note bodies. Right-click on empty space deselects.
- Shift-Click Pitch Point Anchors: Shift-clicking a plain MIDI note to add the first point now automatically creates start (t=0) and end (t=1) anchor points to preserve the note's original position.
- Multi-Note Edge Resize Fix: Selecting multiple notes and dragging the resize edge now correctly resizes (not moves) all selected notes.
- UI Scale Setting: New UI Scale option in Preferences (100%–200%).
Bug Fixes
- Synth Overlay Fix: Dark overlay no longer re-appears every time you switch to the Synth tab. Only shows on first load per session.
- Playback Controls Cleanup: Playback ON/OFF toggle and Output Enabled/Disabled row removed from playback settings, consolidated into the new header Sound button.
- Cursor Feedback: Various cursor feedback improvements across tools.
v0.9.1 June 2026
Built-in MPE synthesizer (SYNTHSketch), WAV sampler engine, fully editable LFO tool, Ramp Generator, 11 themes, and 36 files of improvements.
Windows: Installer · Standalone · VST3
macOS: Installer · Standalone · VST3/AU
Built-in Synth Engine: "SYNTHSketch"
- MPE-Native Wavetable Synthesizer: MIDISketch now ships with a fully integrated MPE synthesizer, no external plugins required. Wavetable engine with Sine, Saw, Square, and Triangle waveforms. MPE-native: per-note pitch bend (±48 semitones).
- Unison & Sound Shaping: Unison up to 7 voices with adjustable detune (0–100 cents). Full ADSR envelope: Attack, Hold, Decay, Sustain, Release. Stereo filter with Low-pass, High-pass, Band-pass, and Notch modes plus cutoff, resonance, and drive. Octave and semitone transpose controls. Level control with soft-clip output protection (–60 dB to +6 dB).
- Synth Panel UI: 4-quadrant pocket synth layout inspired by DSi hardware. Round draggable knobs with visual arcs and value readout. Live waveform preview display. "Load Different Synth" button to switch back to the VST browser. Double-click any knob to reset to default. SYNTHSketch appears in the Verified tier of the synth browser.
Built-in Sampler Engine
- WAV Sample Playback: Load any WAV file and play it as an MPE instrument, right inside MIDISketch. Drag-and-drop WAV loading directly onto the sampler panel. Sampler mode toggle accessible from the synth browser (Verified tier).
- Smart Pitch Detection & Controls: Auto pitch detection using autocorrelation to set the correct root note. Root note selector dropdown for manual override. Draggable start/end trim markers with waveform visualization. Loop point markers for sustained sample playback. Hermite interpolation for high-quality pitch-shifted playback. Full ADSR envelope and level control.
LFO Tool: Now Fully Editable
- Drawable Waveshape: Custom waveshape canvas: draw your own LFO shape by adding, moving, and deleting points. Bezier curve support: middle-click any point to add bezier handles for smooth curves. Waveshape presets: Sine, Triangle, Saw Up, Saw Down, Square, Noise, and more via icon buttons. Shift+click snapping for precise point placement.
- Depth & Speed Envelopes: Depth envelope canvas: draw how the LFO depth changes over time (fade-in, fade-out, swell, etc.). Speed envelope canvas: draw how the LFO speed changes over time (accelerate, decelerate, etc.). Both envelopes use the same drawable point system as the main waveshape.
- Random Preset: Random option in presets generates a randomized LFO with a random waveshape (from ~8 noise/shape presets), random cycle count, and fixed reasonable depth. Great for adding organic, unpredictable movement to pitch curves.
- LFO Stability: LFO patterns now stay perfectly in place when extending or resizing notes. Fixed a critical double-scaling bug in anchor time recalculation. LFO regions are excluded from automatic endpoint insertion during note resize.
Ramp Generator (New Tool)
- Pitch Ramp Dialog: A brand new Ramp Generator dialog for creating pitch ramps at the start or end of notes. Start/End toggle applies the ramp at the beginning or end. 5 shape presets: Linear, Ramp Down, S-Curve, Exponential, Logarithmic.
- Drawable & Configurable: Drawable shape canvas: customize the ramp curve by adding/moving/deleting points with bezier support. Depth control (1–48 semitones) with real-time preview. Time control: snap to beat divisions (1/16 to 2 beats) or switch to free-time mode. Extend MIDI toggle optionally extends the note to accommodate the ramp. BPM-aware time display.
New Buttons, Icons & Styling
- Playback Bar: Quad/Triplet grid toggle button added to the far-left of the playback bar. Metronome button with styled on/off states. Follow button redesigned: always shows "FOLLOW" text, color-coded (green = active, grey = inactive). Reveal button added to the top header bar.
- 16 New Icons: FOLLOW (green/grey states), REVEAL (green/grey states), DAW and PLUGIN indicator icons, PLUS/MINUS (green/grey) for zoom controls, ON/OFF toggle icons, BLANK button templates (green/grey) for future controls, Extend icon for note resize handles.
- 11 Built-in Themes: Default (Midnight), Obsidian, Deep Ocean, Ember, Slate, Sakura, Monochrome, Green Screen, Aero, and Custom. Custom theme: user-editable colors saved with project state. Themes do not affect the top menu bar. PopupMenu colors automatically adapt to light/dark themes.
UX Polish & Quality of Life
- Keyboard & Controls: Space bar playback in Synth/Sampler view: interacting with knobs no longer steals keyboard focus. Right-click hold context menu (250ms) for quick access to note operations. Shift+click free-time point placement: hold Shift to place pitch points without grid snapping.
- UI Cleanup: Join/Scale/Ramp settings: removed dark blue containers, toggled content now uses clean inline styling. File Menu cleanup: removed "Hide Grid Lines" option, renamed "Quick Start" to "Help". Oscilloscope: real-time waveform visualization with MIDI-synced pitch tracking.
- New Dialogs: Unison dialog for voice spread configuration. Strum dialog for chord strum timing. Quick Start Synth tab reordered for better flow.
Bug Fixes & Glitches Resolved
- Note Editing: Single-note extend fix: extending a selected note's edge no longer accidentally grabs adjacent back-to-back notes. Extend grab zone tightened to prevent accidental resizes. Set Pitch octave fix: corrected a 2-octave offset error (C5 now correctly maps to MIDI 60).
- LFO Fixes: LFO no longer shifts when resizing notes (fixed double-scaling of LFO anchor times during drag operations). LFO endpoint insertion: notes with LFO settings are now excluded from automatic t=1.0 pitch point insertion that was corrupting LFO waveforms.
- Synth & Audio: Unison knob drag: fixed broken threshold-based drag, now uses absolute distance (20px per step). Per-voice phase randomization prevents phase-locking. Semantic version comparison for update checking: no more false "update available" alerts.
- Build & Platform: Zero-warning builds on both Windows (MSVC) and macOS (Clang). macOS 10.15 Catalina compatibility maintained. macOS CoreGraphics include fix for CGEvent APIs.
v0.8.4 May 2026
UX polish, faster MIDI editing, DAW playback passthrough, and bug fixes.
Windows: Installer · Standalone · VST3
macOS: Installer · Standalone · VST3/AU
New Features
- Spacebar DAW Playback Control: Press Spacebar inside MIDISketch to play/pause your DAW's transport without clicking out of the plugin. Sketch your MIDI ideas while hearing them in context with the rest of your track. No more alt-tabbing or clicking the DAW just to hit play. Toggle between DAW or plugin playback in the playback settings above the piano roll.
Performance & UX
- Faster MIDI Placing & Navigating: Significant performance improvements when placing notes and navigating the piano roll.
- UX Improvements: Overall user experience polish for a smoother workflow across the board.
Bug Fixes
- Stability Improvements: Various bug fixes across the board for improved stability and reliability.
v0.8.3 May 2026
Stamp Tool Chord Families, Quick Start redesign, macOS 10.15 compatibility fix, preferences modal, and per-note expression improvements.
Windows: Installer · Standalone · VST3
macOS: Installer · Standalone · VST3/AU
New Features
- Stamp Tool: Chord Families: Browse 6 chord families (Single, Intervals, Triads, Sevenths, Extended, Special) with scroll-to-browse. Use Shift+Scroll for inversions and Ctrl+Scroll to switch family tier.
- Preferences Modal: New configurable right-click behavior: choose between context menu (default) or quick erase mode.
- Alt+Double-Click Segment Reset: Double-click a pitch curve segment while holding Alt to reset it to a straight line, designed for touchpad and laptop users.
- Quick Start Guide Redesign: Completely redesigned onboarding with 7 tabbed categories (Notes, Curves, Select, Navigate, Synth, More, Trackpad). Now anchored bottom-right with a convenient X button.
MPE & Expression
- MPE Chase Fix: Expression values now correctly follow when seeking or jumping to a new position in the timeline.
- Pitch Point Colors: Pitch points now use distinct colors for better visibility against curves.
- Playhead Opacity Control: Adjustable playhead transparency for a cleaner visual workflow.
macOS Compatibility
- macOS 10.15 Catalina Fix: Fixed a crash caused by using a macOS 12+ API (kIOMainPortDefault). Now uses kIOMasterPortDefault fallback for 10.15+ compatibility.
- Deployment Target Fix: CMAKE_OSX_DEPLOYMENT_TARGET now set globally so all targets (JUCE, IXWebSocket, binary data) build for 10.15+, preventing silent load failures on older macOS.
Bug Fixes
- Quick Start Modal Hit Detection: Fixed Quick Start modal clickable areas not matching their visual position.
- Alt+Double-Click Fix: Fixed segment reset never firing. JUCE routes the 2nd left-click to mouseDoubleClick(), not mouseDown(); logic moved to the correct handler.
- macOS Installer Version: Fixed Distribution.xml version being stuck on an old version number.
v0.8.1 May 2026
Bug fix release: fixes bezier curve removal on left-click, improves segment bend hit detection, adds Quick/Deep Scan for synths, and macOS performance improvements.
Windows: Installer · VST3
macOS: Installer · VST3/AU
Bug Fixes
- Bezier Curve Preservation: Fixed an issue where left-clicking on pitch points would accidentally remove bezier curves. Curves are now preserved during normal selection and editing.
- Segment Bend Hit Detection: Improved hit detection accuracy for middle-mouse or Alt+click segment bending. Curves on steep or short segments are now much easier to grab.
Improvements
- Quick Scan & Deep Scan for Synths: Added dedicated Quick Scan and Deep Scan buttons to the synth browser. Quick Scan checks common paths for fast results; Deep Scan searches all directories for a thorough plugin inventory.
- macOS Cleanup & Performance: General performance improvements and cleanup for macOS builds. Reduced CPU overhead and smoother rendering across all Mac configurations.
v0.8.0 May 2026
New Stamp, Brush & Perform tools, built-in metronome, live MPE pitch preview, pitch simplifier, full theme system overhaul, .mpe v2 format, standalone builds, and 73 files of improvements.
Windows: Installer · Standalone · VST3
macOS: Installer · VST3/AU
New Tools
- Stamp Tool: Clone and stamp note patterns: select a group, then click anywhere to paste copies. Drag to set the length of stamped notes. A stamp cursor icon with a visual preview of the pattern makes placement intuitive.
- Brush Tool: Paint notes freehand by dragging across the piano roll. Hold Shift to lock the vertical axis at the moment Shift is pressed (not stroke start), making it easy to paint along a single pitch.
- Perform Record Tool: Draw pitch by dragging on the piano roll while playback is running, recording pitch automation in real-time as a performance gesture. Separate from the header Record button (which arms MIDI-in recording).
- Simplify Tool: Reduce pitch point density with configurable tolerance via a new SimplifyDialog. Smooths jagged pitch curves and reduces file size. Perfect for cleaning up freehand or recorded gestures.
Live MIDI Preview
- Hear Everything as You Edit: Pitch point drag plays the note with live MPE pitch wheel tracking as you move points. Segment lift/move previews the note at the first pitch point's pitch. Segment bend plays a preview on middle-click or Alt+click. Note placement and drag now includes micro-tonal pitch wheel preview.
Metronome
- Built-In Click Track: Toggle button in the header bar between BPM and Follow. Plays a bar click on beat 1 and a beat click on beats 2–4 during playback. Smart click avoidance prevents double-hits. Audio embedded as WAV binary data with zero external dependencies. Green pill-button style matching Play/Record.
Pitch Curve Editing
- Better Hit Detection on Steep Slopes: Widened hit-test tolerance for steep pitch slopes (minimum 8px), fixing right-click failures on downward slopes. Defensive drag-state reset in mouseDown prevents occasional pitch point lock-ups.
- LFO Generator: Typeable Depth: Numeric input field to the right of the depth slider lets you type exact values, matching the cycles field style. Enhanced dialog layout.
Theme System Overhaul
- 9 Adaptive Color Helpers: New ThemeManager helpers: isLightTheme, buttonInactive, textPrimary, textMuted, separator, panelBg, accent, buttonBorderInactive. Replaced 50+ hardcoded Midnight-specific color values across all panels.
- All Themes Work Everywhere: Monochrome, Green Screen, and all other themes now render correctly in popup menus, toolbar buttons, velocity panel, status bar, and parameter strip.
GameBevel Design & Icons
- Retro Game-Button Bevel: New 3D raised/depressed button states with specular highlights and depth shadows for Follow, synth controls, Learn/Unmap/Help buttons. Consistent pill-button styling across all header controls.
- Custom Pixel Art Tool Icons: All 7 tools now have custom pixel art icons with clicked/unclicked states: Pencil, Point, Highlight, Razor, Brush, Stamp, and Perform. Loop marker icon renders at native 1:1 pixel size.
- Header & Grid Polish: Layout: [Play] [Rec] [BPM] [Metro] [Follow]. Settings gear icon reduced to 28% of header height. Default grid opacity now 50% for a cleaner baseline.
.mpe v2 Format
- Richer File Format: Export now saves velocity, release velocity, ghosted status, pressure/slide/pan curves, and loop settings. Import reads all v2 fields with full backward compatibility for v1 files. Visual data (colors/thickness) intentionally excluded.
Infrastructure & CI/CD
- Standalone Builds: Standalone app builds added for both Windows and macOS. Run MIDISketch without a DAW, perfect for sketching ideas outside your session.
- Improved Build Pipeline: Windows: Build → Azure Trusted Signing → Inno Setup Installer → Upload. macOS: Universal Binary → Codesign → Notarize → Staple → Upload. Stale BinaryData cleanup step before configure fixes asset rename builds.
- Plugin Scanning: Removed auto-scan on startup, preventing blocking for producers with large plugin libraries. Vital moved to Verified section in the scanner.
Bug Fixes
- Pitch point lock-up: Defensive drag-state cleanup prevents occasional inability to move pitch points.
- Right-click on steep slopes: Widened hit-test from narrow curve tolerance to minimum 8px; steep downward slopes are now reliably clickable.
- Plugin focus after drag-and-drop: Keyboard focus is now reclaimed after MIDI export drag.
- macOS CI CRLF issue: Added carriage-return stripping to version extraction; Windows commits injected carriage returns that broke macOS builds.
- Brush icon case sensitivity: Forced lowercase filenames for macOS case-sensitive filesystem.
v0.7.0 May 2026
Reaper compatibility, overhauled LFO and synth sections, updated UI buttons, and automatic update notifications.
Windows: Installer · VST3
macOS: Installer · VST3/AU
DAW Compatibility
- Reaper Officially Supported: Reaper has been tested and verified as compatible. MIDISketch now officially supports FL Studio, Ableton Live, Logic Pro, and Reaper.
Update Notifications
- Know When a New Version Drops: MIDISketch now checks for newer versions on launch. If an update is available, a non-intrusive banner appears with a direct link to the download page.
LFO Rehaul
- Massive LFO Improvements: The LFO system has been completely rehauled for a massive improvement in modulation capabilities and usability.
Synth Section Overhaul
- Redesigned Synth Integration: A complete overhaul of how the synth section works and is organized, streamlining your workflow.
Visual Polish
- UI Button Updates: Visual updates to buttons across the interface for a sleeker, more modern feel.
Under the Hood
- Internal stability improvements: Various under-the-hood fixes and optimizations for a smoother editing experience.
v0.6.5 May 2026
Reference image overlay, camera follow mode, trackpad fixes, shift-click pitch points, note preview audio, MPE auto-configuration & more.
Windows: Installer · VST3
macOS: Installer · VST3/AU
Reference Image Overlay
- Import a PNG or JPG as background: Load any image behind the piano roll to sketch melodies from a spectrogram, chart, or reference. Use File → Import Image or drag and drop a PNG/JPG directly onto the piano roll.
- Floating control panel: A floating panel appears with Opacity, Position X/Y, and Scale W/H sliders. Lock/Free toggle keeps the aspect ratio locked while scaling (locked by default). Use Clear Image on the panel or via File → Clear Image to remove it.
Camera Follow Mode
- Auto-scroll with the playhead: Click FOLLOW in the toolbar to cycle through modes: PLAY (scrolls to keep the playhead visible), CAM (camera moves with the playhead continuously), or Off (no auto-scroll). Camera auto-pan also works while dragging notes near the edge of the view.
Trackpad & Magic Mouse Fixes
- Vertical scroll direction fixed: Scrolling on trackpads and Apple Magic Mouse was inverted; now correct.
- Pinch-to-zoom is horizontal only: Pinch-to-zoom now zooms horizontally only, as expected on a piano roll. Alt+scroll zooms without also scrolling the view. Two-finger swipe scrolls smoothly in both directions.
Shift-Click Pitch Points
- Build MPE pitch curves without switching tools: Shift-click on an empty area to create a new short note with a starting pitch point. Shift-click on a selected note to add a pitch point at the click position, snapped to the grid. Shift-click and drag on a note to duplicate it (drag to position the copy). Hold Alt while shift-clicking to bypass grid snapping. New shift-click notes start at 1 beat, not copied from the last note length.
Note Preview Audio
- Hear what you're placing in real time: Notes now play their pitch when you draw or interact with them, giving you immediate audio feedback as you build your MIDI performance.
MPE Auto-Configuration
- Automatic MPE RPN on load: MIDISketch now automatically sends the MPE Configuration RPN (RPN 6) when the plugin loads, telling connected synths to enable MPE mode. No manual setup needed in your synth for supported instruments.
Fixes & Improvements
- Ctrl+D deselects all: Ctrl+D now deselects all notes and clears any time selection. Previously it was paste+advance, which is now removed to avoid confusion.
- Polyphony warning: A toast notification appears if you hit the 15-voice limit.
- Grid opacity slider: Added in the Design panel; dial back the grid lines to focus on notes.
- Auto-pan past grid edges: Dragging notes near the right edge now scrolls smoothly beyond the current content.
- MIDI trigger mode simplified: Auto mode is now the default; the trigger note setting is hidden unless needed.
- Note stays under cursor: Fixed offset drift when dragging notes while the view was scrolled.
- Note length inheritance fix: Fixed note length being incorrectly inherited when creating new notes after certain operations.
- Scan/spectrogram performance: Faster rendering and sharper pitch detection.
- MIDI trigger isolation: Fixed notes stacking when looping.
Under the Hood (v0.6.5)
- Removed stale debug button: Removed a stale debug button from the toolbar.
- Code cleanup: Unused variables, float→int cast warnings, and dead declarations removed.
- Export menu label corrected: MPE MIDI export now shows .mpe instead of .mid.
v0.6.0 May 2026
Upgrading from v0.5.x? This update brings deeper MPE expression control, a fully redesigned help system, major DAW workflow improvements, and significant piano roll polish.
Windows: Installer · VST3
macOS: Installer · VST3/AU
Workflow & DAW Integration
- Unified Export Menu: All export options are now consolidated into a single Export drop-down, replacing the previous scattered FILE menu entries. Export to Audio (WAV): render directly to WAV and drag onto audio tracks. Drag-and-Drop MIDI: drag straight from the Export menu into FL Studio's playlist, channel rack, or piano roll.
- Improved Ableton Live Compatibility: Updated host-detection handling for a more consistent experience in Ableton Live. If you run into edge cases with MPE or timing in Live, please report them.
Live Performance & Recording
- Real-Time MIDI Recording (REC Button): A dedicated Rec button now appears in the top bar. Connect an external keyboard or MPE controller and record chords, leads, or expression directly into MIDISketch's piano roll in real time.
MPE & Expression Editing
- Strike & Release Velocity Editing: The velocity editor at the bottom now supports two independent modes: Strike (edit Note-On velocity) and Release (edit Note-Off velocity). Click the Strike or Release buttons to switch modes. The bars and value labels update to reflect whichever value you're editing.
- Pitch Curve End Anchor on Double-Click: When you double-click a plain MIDI note to add your first MPE pitch point, the plugin now automatically spawns anchors at both the start (t=0) and end (t=1) of the note, so your pitch curve immediately has the full range of the note to work with.
- Bezier Curve Toggle: Middle-click a pitch point (pencil or point tool) to add bezier handles and create smooth curves. Middle-click the same point again without dragging to reset it back to linear. Click a bezier point with the Point tool (tap, no drag) to also reset to linear.
Piano Roll Editing
- Ctrl+B, FL Studio-Style Duplication: Select notes and press Ctrl+B to instantly duplicate them back-to-back, placing the copy immediately after the end of the selection, matching FL Studio's native workflow.
- FL-Style Time Selection (Header Drag): Click and drag in the bar number header to create a time selection (red overlay, just like FL Studio). Highlight tool: left-click drag. Pencil or Point tool: right-click drag. Clicking a time selection moves the playhead to its start.
- New Tool Shortcuts: B / M (Pencil), P (Point tool), H / E (Highlight/Select), R / C (Razor/slice), F (Cycle follow mode), ? (Help overlay).
In-App Help Overlay
- Tabbed Reference Panel: The static two-column text block has been replaced with an interactive, tabbed reference panel: Drawing, Editing, Expression, and Shortcuts.
- Key Help Additions: Synth MPE setup guide built-in, Segment drag documentation, all tool sections now show their hotkeys in the section title, Bezier curve create/reset interactions documented.
UI Polish
- Playback Settings Panel: The floating panel (Start At Bar, Loop Count, Output) now has a proper "Playback Settings" title header with a separator line, clearly distinguishing it from the Join/Scale settings panel above it.
- Press / Slide Opacity: Pressure and slide expression overlays on notes are now dimmed when those notes aren't selected, reducing visual noise while preserving context.
- Terminus Click Feel: The note end handle (terminus dot) now only places a note on mouse release if the mouse hasn't moved, preventing accidental note creation when you meant to drag. The cursor changes to a hand/grab icon when hovering over the terminus.
Under the Hood
- DragMode Enum: All 20+ drag interactions are now categorized through a unified DragMode dispatcher, making future interaction refactors safer and more traceable.
- Snap Helpers: snapBeatToGrid / snapBeatClamped extracted into reusable utilities, replacing duplicated inline snap logic across the codebase.
- Code Cleanup: Garbled UTF-8 comments resolved across 12 source files; orphaned lambda scope issues from earlier help overlay refactor resolved.
Developer Code Signing
- Windows & Apple Developer Signed: MIDISketch is now fully signed with an official Windows (Microsoft) and Apple developer certificate. No more SmartScreen warnings on Windows or Gatekeeper blocks on macOS. The installer runs cleanly on both platforms right out of the box.
- Better DAW Compatibility: Many DAWs (including Ableton Live and Logic Pro) perform additional validation checks on unsigned plugins. With signing in place, MIDISketch loads faster and more reliably across all supported hosts.
v0.5.5 May 2026
MPE Expression Lanes, Pencil Tool polish, timing stability & more.
Windows: Installer · VST3
macOS: Installer · VST3/AU
MPE Expression Lanes
- Pressure (Aftertouch) & Slide (CC74/Timbre): Draw expression curves directly on notes, just like pitch bends. Pressure and Slide lanes give you per-note control over aftertouch and timbre, essential for fully expressive MPE performances.
- Tab-Style Lane Selector: A new tab bar (Pitch / Press / Slide) is stacked below the tool buttons. Switch lanes instantly with hotkeys: Alt+1 (Pitch), Alt+2 (Pressure), Alt+3 (Slide).
- Colored Expression Fills: Expression curves render with distinct colored fills: amber for Pressure, cyan for Slide. A dotted ceiling guide line shows the max value range on each note.
Pencil Tool Improvements
- Tap to Reset Bezier Handles: Tap a pitch point to instantly reset its bezier handles back to linear (click without dragging). Click-and-drag still moves points as before.
- Smarter Bounding Box: Bounding box now only appears after the hold-timer fires. No more accidental transforms while drawing. Shift+Click renamed to "Add pitch point to note" in help.
Expression Timing Stability
- Resize Without Distortion: Pressure and Slide points now preserve absolute beat positions when a note is resized or extended. Extending a note no longer stretches or distorts your expression curves.
- Visual Anchoring: Expression curves anchor to the note's lowest pitch point, so they visually follow bent notes correctly.
Bug Fixes
- Segment drag runaway: Fixed segment drag shooting right uncontrollably (runaway feedback loop from auto-extend). Segment points now clamp to note boundaries during drag.
- Bounding box persistence: Fixed bounding box persisting after clicking away in Pencil mode.
Help Overlay
- Fully Updated Key Bindings: Corrected all key bindings and added new MPE Expression Lanes section with all controls.
- Serum 2 MPE Setup: Added Serum 2 MPE quick reference (Pressure → Expr Z, Slide → Expr Y).
- Shift+Drag Documented: Shift+Drag now documented as "Duplicate note(s)" in the help overlay.
v0.5.0 May 2026
Ctrl+Click sketching, endpoint editing, architecture overhaul & more.
Windows: Installer · VST3
macOS: Installer · VST3/AU
Ctrl+Click Sketch Mode
- Build Pitch Curves Point by Point: Hold Ctrl + Click anywhere on the canvas to build up pitch curves one point at a time. If a note is selected, the new point is added to it, and the note automatically extends if you click past its end. If no note is selected, a new note is created at the click position. A deliberate, precise way to construct complex pitch gestures without freehand drawing.
Image Background Tracing
- Upload & Trace Over Any Image: Drop any image onto the piano roll to use it as a background overlay. Trace over screenshots of melodies, pitch contours, or sheet music to recreate riffs by ear or match reference material. Adjust opacity and position to fit your workflow.
Endpoint Editing
- Delete the Last Point to Trim Notes: Right-click the last pitch point on a note to delete it. The note automatically shrinks to end at the new last point. Works in both Pencil and Point tools. Iteratively shorten and reshape notes by removing points from the end.
- Consistent Across Both Tools: Previously, endpoint deletion with note shrinking only worked in the Pencil Tool. Now the Point Tool has the same behavior: right-click any endpoint and the note trims cleanly.
Point Tool Enhancements
- Keyboard Shortcuts for Selected Points: Select pitch points with the Point Tool, then use keyboard shortcuts: Shift + up/down moves selected points ±1 semitone. Ctrl + up/down moves selected points ±12 semitones (one octave). Only affects the selected points; the note itself stays in place.
- Click to Reset Bezier: In the Point Tool, clicking a pitch point that has bezier handles now resets it back to a linear point. No need to manually zero out both handles: one click removes the curve. Dragging a handle still works normally.
Visual Polish
- Rounded Line Endcaps: MIDI pitch lines now render with softly rounded endcaps instead of flat cuts. Smoother, more polished look, especially noticeable on short notes and sharp pitch bends.
- Transform Bounding Boxes: Select multiple notes with the Select tool to get interactive transform handles. Scale, stretch, and resize groups of MIDI notes together.
- Line Thickness Settings: Added a right-click slider for adjusting pitch line thickness with live preview, plus a default thickness setting in the File menu.
Segment Move Improvements
- Single Ctrl+Z Undo: Segment moves (click-and-drag between two pitch points to lift a section of the curve) previously required pressing Ctrl+Z twice to undo. Fixed: one undo step now covers the entire segment drag.
MPE Compatibility Database
- Serum 2 Fixed: Serum 2 was incorrectly showing a warning badge because the VST3 filename (Serum2, no space) didn't match the database entry. Both variants are now recognized; Serum 2 correctly shows as Supported.
- Smarter Matching: Plugin lookup now uses prefix matching for version variants. "Kontakt 8" or "Pigments 5" will match their base entries without needing explicit database entries for every version number.
- New Entries: Keyscape added as Supported (Spectrasonics, same engine as Omnisphere).
Architecture & Stability
- Monolithic File Split: The 8,800+ line PianoRollEditor.cpp has been split into three compilation units: PianoRollEditor.cpp (drawing & layout), PianoRollInput.cpp (mouse & keyboard input), and PianoRollActions.cpp (menu actions, clipboard, merge & utilities). Resolves MSVC memory limits during compilation.
- Brand Migration: All internal references updated from "MIDIBend" to "MIDISketch." Existing DAW project states saved under the old name are still loaded correctly, with full backward compatibility.
- MIDI Import Deduplication: The import and merge file parsers shared ~128 lines of duplicated code. Consolidated into a single parseMidiOrMpeFile() helper, eliminating duplication.
- Debug & Crash Tracing: Debug logger and shutdown trace paths updated to %APPDATA%/MIDISketch. Zero-dependency crash tracer maintained for diagnosing DAW-plugin deadlocks.
Drag-to-DAW & Help Updates
- Updated Drag Tooltip: The MIDI drag button now shows: "Drag to your piano roll to save a copy of the MIDI", clearer guidance for new users.
- Help Overlay Shortcuts: New shortcuts documented in the ? help overlay: Ctrl+Click (add point to note), Shift+up/down (move points ±1 semitone), Ctrl+up/down (move points ±12 semitones), middle-mouse-click to pan.
- Merge MIDI: New File menu option to merge a .mid or .mpe file into the existing canvas, stacking it with current content.
Fixes
- Right-click delete on last point: Previously failed intermittently because the pitch point hit-test was gated behind a note-body check that missed by 1–2 pixels at the note edge. Point detection now runs independently.
- Segment drag flicker: Cleaned up the click-between-points interaction to prevent the whole note from moving when only the segment should move.
- Camera drift: Fixed an issue where navigating could incrementally add screen space, causing the view to slowly drift.
- Double undo on segment moves: Removed a redundant pushUndoState() call in mouseUp that created a duplicate undo entry.
- Pen tool tooltip: Added navigation hint: middle-mouse-click and drag to pan around.
v0.4.0 May 2026
Async scanning, visual progress, grid snap overhaul & more.
Windows: Installer · VST3
macOS: Installer · VST3/AU
Spectral Analysis Overhaul
- Async Scanning with Live Progress: The file analysis pipeline has been completely rebuilt from the ground up. Heavy spectral processing now runs on a dedicated background thread, keeping the UI completely fluid. A real-time progress bar tracks analysis completion; no more wondering if the plugin froze during large file imports.
- Scan Confirmation Dialog: Before any analysis begins (drag-and-drop or menu import), a confirmation dialog explains the process and lets you opt in. No surprise lag spikes.
- 4× Resolution Spectrogram: The spectrogram now renders at 4× vertical sub-note density with smooth interpolation between frequency bins. The result is a dramatically sharper, more detailed frequency visualization mapped directly to the piano roll grid.
- Scan Control Panel: The old resolution buttons have been replaced with a streamlined control panel featuring: Threshold (filter out low-energy frequencies), Opacity (blend the spectrogram with the piano roll background), Brightness (boost or soften frequency intensity), and Clear Scan (instantly remove the spectrogram overlay).
Reference Audio Playback
- Layered Audio & Independent Volume: Load a reference audio file and hear it play back in sync with the piano roll, layered on top of your synth output. Toggle it on/off and adjust volume independently from the scan control panel. Perfect for matching pitch curves to a vocal or instrument recording.
Bezier Curve Editing
- Pencil Tool, Mirrored Handles: Photoshop Pen Tool style: click a point + hold + drag to create or edit bezier handles. Both handles move symmetrically; drag one side and the other mirrors it automatically. Click an existing handle to grab and reposition it in mirrored mode. Click on a note body to place a new point. Hold the click and drag to immediately shape the bezier curve on that point.
- Point Tool, Independent Handles: Click a handle to grab and move it independently; the opposite handle stays put. Ideal for creating asymmetric curves, sharp transitions, or one-sided easing.
- Visual Cleanup: Bezier handles now only appear on the selected note, reducing clutter when working with multiple notes. Handles are visible in both Pencil and Point tools.
Note Tail Resize
- Easy End-Dragging: Click and drag in the flat region after the last pitch point to resize the note end. No need to hunt for the tiny right-edge handle; anywhere in the tail area works. Multi-selection supported.
MIDI Keyboard Pass-Through
- Audition While Editing: MIDI keyboard input now passes directly through to the hosted synth, so you can audition sounds and play along while editing.
Modifier Key Overhaul
- New Shortcuts: Add a point on the curve: Click (Pencil tool, on note body). Free vertical point placement: Ctrl + Click. Grid-snapped movement: Ctrl + Drag. Bypass pitch snapping: Shift + Drag.
- Shift-Drag Snapping Removed: Shift-Drag grid snapping has been removed. Shift + Click is now exclusively for adding points, eliminating the old input conflict.
Fixes & Stability
- Bezier handles preserved on resize: Extending or shrinking a note no longer distorts existing bezier curves.
- Scan progress bar accuracy: Timer-driven repaints ensure the progress bar updates smoothly instead of appearing stuck at 0%.
- Thread safety: Analysis thread wrapped in try-catch to guarantee clean state reset on failure.
- Deadlock fix: Resolved a mutex lock ordering issue in clearFrames that could freeze the UI.
- Accidental point overlap protection: Guardrails prevent dropping a new point directly on top of an existing one.
v0.3.0 May 2026
Performance improvements and bug fixes.
Windows: Installer · VST3
macOS: Installer · VST3/AU
Changes
- Performance and stability improvements: Core engine optimizations for smoother playback and reduced CPU usage.
- Bug fixes from Early Access feedback: Addressed issues reported by the community during the initial launch.
Looking for even older builds or a specific installer? Every release is archived on the versions page. For the product overview, head back to MIDISketch.