README from GitHub, MIT
M-VAVE SMK-37 Pro Dedicated ASIO Driver
Dedicated high-performance, ultra-low-latency ASIO driver custom engineered for the M-VAVE SMK-37 Pro keyboard controller and synthesizer on Windows 10 and Windows 11 (64-bit).
🚀 Why This Dedicated Driver Instead of ASIO4ALL?
ASIO4ALL is a generic wrapper that frequently causes major issues in music production:
- Destructive Exclusive Locking: Locks Windows audio entirely, preventing web browsers, YouTube, or Spotify from playing while producing.
- Instability & DAW Crashes: Sample rate changes or USB disconnections can freeze DAWs or cause blue screens.
- MIDI Desynchronization: Jitter and timing alignment errors with MIDI hardware in modern DAWs.
The dedicated M-VAVE SMK-37 Pro ASIO driver resolves all of this:
- Direct WASAPI Exclusive & Shared Support: High-performance native communication with the SMK-37 Pro's USB Audio Class 1.0 Isochronous endpoints (32-bit Float / 24-bit PCM, 44.1 kHz & 48.0 kHz, 2 In / 2 Out).
- True Low Latency: Buffer sizes selectable in powers of two from 32 samples (0.73 ms) to 2048 samples (46.4 ms).
- Drift-Free QPC Clock Synchronization: High-precision timestamps based on system QueryPerformanceCounter (
kSystemTimeValid,kSamplePositionValid,kSampleRateValid) aligned with Windows MIDI events. - Circular FIFO Ring Buffer with Drift Clamp: Keeps audio streaming rock-solid during long production sessions, eliminating buffer underruns, distortion, and DAW crashes (CTD).
- Real-Time MMCSS Pro Audio Priority: Dedicated audio streaming thread with
AvSetMmThreadCharacteristicsW("Pro Audio")andTHREAD_PRIORITY_TIME_CRITICALwithout disk I/O in the audio path. - Integrated Control Panel: Accessible directly from within any DAW (Hardware Setup / Control Panel button) or as a standalone app (
SMK37Pro_ControlPanel.exe). - Self-Contained & Lightweight: 100% static C++, zero dependencies on external DLLs or third-party installers.
📊 Latency Chart (44.1 kHz)
| Buffer Size (Samples) | One-Way Latency | Approximate Roundtrip Latency | Recommended Usage |
|---|---|---|---|
| 32 | 0.73 ms | ~ 1.8 ms | Extreme performance / Ultra-responsive monitoring |
| 64 | 1.45 ms | ~ 2.9 ms | Live playing and hardware synth recording |
| 128 | 2.90 ms | ~ 5.8 ms | Medium projects with virtual instruments |
| 256 | 5.80 ms | ~ 11.6 ms | General production and smooth tracking |
| 512 (Recommended) | 11.61 ms | ~ 23.2 ms | Standard mixing with heavy VST plugin loads |
| 1024 | 23.22 ms | ~ 46.4 ms | Massive projects with orchestral libraries / automation |
| 2048 | 46.44 ms | ~ 92.8 ms | Relaxed buffer for intensive mastering |
🎧 Audio Channel Routing
The SMK-37 Pro integrates a MIDI controller, USB audio interface, and internal FM (DX7) synthesizer engine:
- ASIO Inputs (Inputs 1 & 2):
SMK-37 In L (DX7)SMK-37 In R (DX7)- Directly records audio generated by the internal hardware synth into your DAW without analog audio cables.
- ASIO Outputs (Outputs 1 & 2):
SMK-37 Out LSMK-37 Out R- Routes your DAW master output directly to the SMK-37 Pro's 3.5mm headphone/line-out jack with minimal latency.
🛠️ 1-Click Installation
- Download the release package or clone this repository.
- Right-click
install_driver.batand select Run as administrator. - The installer copies the binaries to
%ProgramFiles%\M-VAVE SMK-37 Pro ASIO\and registers the COM InProc server underM-VAVE SMK-37 Pro ASIO(CLSID{7C38B80E-5AED-4B33-A751-6CE34EC4C701}).
🎹 DAW Configuration Guides
1. Ableton Live
A. Configure ASIO Audio
- Open Options > Preferences (
Ctrl + ,) and navigate to the Audio tab. - Driver Type: Select
ASIO. - Audio Device: Select
M-VAVE SMK-37 Pro ASIO. - Use the Buffer Size dropdown to select your preferred buffer size (e.g. 128, 256, or 512 samples).
- Click Hardware Setup to open the Control Panel and toggle WASAPI Exclusive mode.
B. Configure MIDI Input (Crucial Step)
- In Preferences, switch to the Link, Tempo & MIDI tab.
- Under MIDI Ports, locate
Input: SMK-37 Pro Midi. - Toggle the Track button to ON (turns yellow).
- (Optional) Toggle Remote to ON for
Input: SMK-37 Pro MidiandMIDIIN2 (SMK-37 Pro Midi)to map the 8 rotary encoders. - In your MIDI track, set MIDI From to
All Inputs(orSMK-37 Pro Midi, Channel 1) and arm recording.
2. FL Studio
- Open Options > Audio Settings.
- Under Input / Output, select
M-VAVE SMK-37 Pro ASIO. - Click Show ASIO Panel to adjust buffer sizes or exclusive mode.
3. REAPER
- Navigate to Options > Preferences > Audio > Device.
- Audio system: Select
ASIO. - ASIO Driver: Select
M-VAVE SMK-37 Pro ASIO. - Enable Inputs (1 to 2) and Outputs (1 to 2).
4. Cubase / Studio One
- Open audio setup (Studio Setup > Audio System).
- Select
M-VAVE SMK-37 Pro ASIOas the master ASIO driver.
🎛️ Standalone Control Panel
You can open the configuration interface at any time without launching a DAW:
SMK37Pro_ControlPanel.exe
Features:
- Live detection of USB audio hardware endpoints.
- Real-time buffer size adjustment with instant millisecond latency display.
- Toggle between WASAPI Exclusive (lowest latency, mixer bypass) and Shared mode (allows background playback from browsers or Spotify).
🔨 Building from Source
Builds statically with LLVM MinGW or GCC/MinGW-w64 (x86_64):
build_driver.bat
Prerequisites:
clang++org++(x86_64) on systemPATH.- Standard Windows SDK headers (
windows.h,audioclient.h,avrt.h,commctrl.h).
🧪 Verification Tests
The tests/ directory provides test suites to validate driver stability:
test_timestamp.cpp: Verifies nanosecond timestamp alignment with system QPC clock.test_robustness.cpp: Tests live buffer size transitions (32 to 2048 samples) across exclusive and shared modes.test_long_stream.cpp: Extended continuous streaming test (30+ seconds) verifying zero buffer underruns and no latency drift.test_control_panel_sim.cpp: Simulates control panel invocation from the host DAW thread.test_midi.py: Direct hardware verification of USB-MIDI keybed and encoder messages.
🗑️ Uninstallation
To unregister the COM driver and remove its registry keys:
uninstall_driver.bat
📄 License
This driver is licensed under the MIT License. See LICENSE for details.