After the first experiments with the M-VAVE SMK25II, I had already written a synth prototype in Python. It worked, but for this kind of real-time MIDI use I noticed too much latency: the delay between pressing a key and hearing the sound made the keyboard feel less reactive than I wanted.
For this reason I moved the project to C++. Python normally adds more runtime overhead, while C++ is compiled to native machine code and gives more direct control over timing, memory and audio buffers. This makes it more suitable for low-latency audio processing on the Raspberry Pi.
The current C++ project turns the Raspberry Pi into a custom synth, WAV sampler and looper for the M-VAVE SMK25II, connected through Bluetooth MIDI.
The current version includes 16 internal synth instruments, experimental
8-bit sounds, a dedicated WAV Sample Kit, custom sample mapping through
map.txt, gate / oneshot / loop playback modes, individual sample volume,
7 independent loop tracks and direct stereo recording of the final mix.
One of the more interesting functions is sample-position recording: if a long WAV is already playing when loop recording starts, the software can remember the current playback position instead of always restarting the sample from the beginning.
The first C++ version was written with the help of AI, but many parts were reviewed, tested and modified several times on real hardware to fix bugs and improve MIDI handling, WAV playback, looper behavior, recording and the 8-bit effects.
More technical details, source code and configuration examples are available on GitHub: Synth-Mvave_SMK25II .
This Raspberry Pi version is only the first step. New custom projects are also planned for Windows desktop computers and Android devices.