A native sample browser for REAPER on macOS / Apple Silicon.
SampleTree is a dockable REAPER extension for browsing large sample libraries quickly, auditioning sounds without clicks, searching by musical metadata, and getting samples into a project with fewer repetitive steps. It is built with REAPER's extension API and SWELL, with small Cocoa/AppKit bridges where macOS input and scrolling need to feel native.
It does not use ReaImGui or JUCE.
Important
This is a source release for macOS running on Apple Silicon. It does not include a prebuilt binary: the provided one-command script builds and installs the extension locally.
- Dockable sample browser with persistent sample-folder roots.
- Three layouts: inline tree, folders left / samples right, and folders top / samples bottom.
- Native AppKit scrolling and search input; careful fallback handling for coarse trackpad wheel events.
- On-demand waveform and MIDI previews, including persistent per-file cache validation — it never tries to bulk-build a huge library.
- Click-safe preview switching: changing sounds uses a very short de-click bridge rather than an audible hard cut.
- Fast background folder scanning, persistent directory snapshots, recursive expand, hidden folders and hidden file types.
- Search with fuzzy matching and operators such as
ext:wav,type:audio,type:midi,path:, quotes, and exclusions. Search is case-insensitive for ASCII, Latin-1 and Cyrillic, includingЁ/ё. - Audio and MIDI drag-out, plus selected-sample insert actions.
- Create or replace ReaSamplOmatic5000 (RS5K) and Cartridge sampler tracks from a selected sample.
- Tap-record a selected sound into a MIDI pattern, then insert, drag, or send it to a sampler.
- 31 assignable REAPER Actions for keyboard- and controller-driven use.
- macOS on Apple Silicon (arm64).
- REAPER installed.
- Xcode Command Line Tools.
- CMake.
- Git.
The build script downloads the official REAPER SDK and WDL at pinned revisions. They are not committed to this repository.
-
In Terminal, clone this repository and enter it:
git clone https://github.com/NANAMINER/SampleTree.git cd SampleTree -
If needed, install the Apple command-line tools:
xcode-select --install
-
Install CMake. With Homebrew:
brew install cmake
-
Build, test, and install SampleTree:
./scripts/bootstrap_and_build_macos.sh
The script clones the pinned SDK dependencies, builds the arm64 Release target, runs core tests, and installs:
~/Library/Application Support/REAPER/UserPlugins/reaper_sampletree-arm64.dylib -
Restart REAPER. Open Actions → Show action list, then run:
SampleTree: Toggle native sample browser
To update, pull the new version and run the same script again. It overwrites only SampleTree's installed .dylib.
- Open the browser from the Action List.
- Click Add Folder and choose one or more library roots.
- Click an audio or MIDI file to audition it.
- Drag an audio file to REAPER, use the context menu, or assign the SampleTree actions you use most.
- Open Settings to choose a browser layout, tune scrolling, manage cache entries, and configure sampler behavior.
SampleTree stores its settings, roots, caches, temporary tap recordings, and optional diagnostics in:
~/Library/Application Support/REAPER/SampleTree/
This data is separate from the extension itself. Removing it resets SampleTree's local settings and caches, but never touches your sample files or REAPER projects.
ext:wav kick
type:audio 808
type:midi groove
path:vengeance clap
"hard kick"
kick -loop
SampleTree adds 31 actions, including browser visibility, search, navigation, preview transport, folder maintenance, cache clearing, tap recording, inserting samples, and RS5K / Cartridge workflows.
For example:
SampleTree: Toggle native sample browser
SampleTree: Focus search
SampleTree: Select/preview previous media file
SampleTree: Select/preview next media file
SampleTree: Expand selected folder and all subfolders
SampleTree: Create RS5K track from selected sample
SampleTree: Replace selected sample in Cartridge
The full list is registered in REAPER's Action List under SampleTree:. If you want REAPER actions to own arrow-key and Tab navigation, turn off Settings → Folder navigation → Keyboard navigation.
SampleTree 1.0.0 is the current source release. Its portable C++ tree/search tests are included. On a target Mac, please report any issue with preview switching, drag/cancel behavior, cold and warm folders, search, split layouts, scrolling, or sampler actions.
Windows and Linux are not supported by this release. The tree/search/cache/action core is designed to be portable, but the native drag, input, search, and scrolling bridges are currently Cocoa/AppKit implementations and need platform backends before those targets can be supported.
The script is the supported route. If you need to inspect the build yourself, it performs the equivalent of:
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_OSX_ARCHITECTURES=arm64
cmake --build build --config Release
ctest --test-dir build --output-on-failure
cmake --install build --config ReleaseSampleTree is released under the MIT License. The build script fetches the official REAPER SDK and WDL separately; those dependencies remain subject to their own licenses. SampleTree is an independent community project and is not affiliated with Cockos Incorporated.
For bugs and feature ideas, please open a GitHub issue with your macOS version, REAPER version, Mac architecture, and steps to reproduce. For scroll-specific reports, enable diagnostics in Settings → Debug and attach scroll-debug.log from SampleTree's application-support folder.