# Monoslicer A monophonic sample slicer and sampler instrument built with [JUCE](https://juce.com/) and CMake. Load an audio file, slice it into regions (automatically via onset detection or manually), and trigger individual slices via MIDI. ## Screenshot ![Monoslicer](monoslicershot.png) ## Features - **Slice & trigger** - Load WAV, AIFF, FLAC, or OGG files and play slices chromatically via MIDI (starting at C4) - **Auto-slice** - Onset-based detection with adjustable sensitivity - **Manual slice control** - Click to add, right-click to remove, drag to reposition slice markers - **Per-voice envelopes** - Amplitude and filter ADSR envelopes with configurable depth - **Filter** - 5-mode biquad filter (LP12, LP24, HP, Bandpass, Notch) with cutoff, resonance, and envelope depth - **Bass / Treble** -- Adjust low and high frequency emphasis for onset detection (affects how auto-slicing works) - **Pitch shift** - Key transpose from -12 to +12 semitones - **Time stretch** - Resample to a target beat count at a given BPM - **Undo/redo** for slice operations - **Zoomable waveform display** with piano key sidebar and time ruler - **Full DAW state recall** - All parameters and slices are saved with your session - **UI scaling** from 75% to 200% ## Building Requires CMake 3.22+ and a C++17 compiler. ```sh make # Fetch JUCE, configure, build make install # Build, then copy the plugins to your system directories ``` `make` only builds — installing to system plugin folders is opt-in via `make install`. On macOS `make install` copies the AU to `~/Library/Audio/Plug-Ins/Components` and the VST3 to `~/Library/Audio/Plug-Ins/VST3`, then triggers an Audio Unit rescan. On Linux it copies the VST3 bundle to `~/.vst3`. Individual targets are also available: ```sh make fetch # Clone JUCE 8.0.9 make configure # CMake configure make build # Build (Release) make install # Build, then install (AU + VST3 on macOS, VST3 on Linux) ``` ### Tests ```sh make test ``` Currently one suite: `Tests/DragAndDropTest.cpp` verifies that dropping an audio file onto the editor is discovered and loaded. It uses a real native peer, so it exercises the same code path a host does. Tests build in a separate `build-tests/` directory, so `make` is unaffected. ### Clean ```sh make clean # removes build/ and build-tests/ ``` ## Plugin Formats - Audio Unit (AU) - VST3 - Standalone ## Usage 1. Load an audio file via the **Load** button, drag-and-drop, or the **<** / **>** buttons to browse the current folder 2. Click **Auto Slice** or manually click on the waveform to place slice markers 3. Play slices via MIDI - note C4 triggers slice 0, C#4 triggers slice 1, and so on 4. Shape the sound with the amp/filter envelopes, filter, and tone controls ### Waveform Interaction | Action | Effect | |--|--| | Left-click on waveform | Add slice marker | | Drag slice marker | Reposition | | Right-click on waveform | Remove nearest slice | | Click piano key | Trigger corresponding slice | | Mouse wheel | Zoom / scroll |