# 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. ## Features - **Slice & trigger** -- Load WAV, AIFF, FLAC, or OGG files and play slices chromatically via MIDI (starting at C3) - **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 - **Tone shaping** -- Bass and treble controls - **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 50% to 200% ## Building Requires CMake 3.22+ and a C++17 compiler. ```sh make fetch # Clone JUCE 8.0.9 make configure # CMake configure make build # Build (Release) ``` ### Installing ```sh make install ``` Copies AU and VST3 to the system plugin directories and triggers an Audio Unit rescan. ### Clean ```sh make clean ``` ## 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 C3 triggers slice 0, C#3 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 |