MagnaSampla
MagnaSampla automates the tedious part of multi-sampling an instrument (hardware synth or software instrument): it steps through a range of MIDI notes, records the audio that comes back on your interface, and writes out a clean set of WAV files ready to build a multi-sample instrument — for example on a Synthstrom Deluge.
Typical use case: a physical synth connected to an audio interface (audio in) and to your computer via MIDI (MIDI out). MagnaSampla plays through the note range you configure, records each note, and saves it with a consistent file name.
Configurable per run:
- Scale / note range — lowest/highest MIDI note and the semitone step between sampled notes (e.g. every note, every minor third, every octave).
- How each note's recording ends — either a fixed duration, or automatic silence detection on the tail (with a safety time cap).
- Quality — sample rate and bit depth of the recorded WAV files.
- File naming — a token-based template (
{instrument},{note_name},{midi_note},{velocity},{index},{date}).
Each WAV file is also tagged with the sampled MIDI note in its smpl chunk
(MidiUnityNote), so samplers that read that metadata — including the
Synthstrom Deluge's "make multisample from folder" feature — map the sample
to the correct key automatically, without relying on pitch detection.
Formats
Built from a single JUCE AudioProcessor and exported as:
- Standalone application (own audio/MIDI device selection).
- VST3 plugin (and AU on macOS).
Using the VST3/AU inside a DAW
The plugin needs to send MIDI out to the instrument being sampled and receive its audio back. This depends on your DAW's inter-track MIDI/audio routing (Reaper, Ableton Live and Cubase support this; some hosts are more limited). The standalone build manages its own audio/MIDI devices directly and doesn't have this constraint — it's the simplest way to sample a hardware synth.
Building
The project uses CMake and JUCE (as a git submodule in libs/JUCE).
git submodule update --init --recursive
cmake --preset <linux|windows|macos>
cmake --build --preset <linux|windows|macos> --config Release
ctest --test-dir build/<linux|windows|macos> --output-on-failure -C Release
Development happens on Linux/WSL, but Linux is not a distribution target —
it's only used here to build and test the Core sampling logic quickly.
Windows and macOS binaries (Standalone/VST3/AU) are built and packaged by the
GitHub Actions workflow (.github/workflows/build.yml), which runs on
windows-latest and macos-latest runners and uploads the build artefacts.
Project layout
Source/Core/— audio/MIDI-agnostic sampling engine (note scheduling, silence detection, WAV writing, file naming, the session state machine). Covered by unit tests inTests/.Source/PluginProcessor.*,Source/PluginEditor.*— the JUCEAudioProcessor/editor that wires the Core engine to real audio/MIDI I/O, shared by both the Standalone and VST3/AU builds.
License
GPLv3 (see LICENSE) — this project builds on JUCE's free/open-source license tier. If MagnaSampla is ever distributed as closed-source, a commercial JUCE license would be required first.
The Windows build enables ASIO device support using the Steinberg ASIO SDK
headers bundled with JUCE (libs/JUCE/modules/juce_audio_devices/native/asio).
Those specific files are covered by Steinberg's own ASIO SDK license terms
(see the SDK license header in those files), separate from MagnaSampla's
GPLv3 license.
