Hi r/linuxaudio 👋
I’ve just released DrumCloud JS v0.26, a free and open-source granular sample instrument written entirely as a REAPER JSFX.
I develop and use it on Linux, and because it is native JSFX there is no Wine, yabridge, VST wrapper or external plugin framework involved. If you run REAPER on Linux, it runs directly inside REAPER.
DrumCloud started as a fairly small granular experiment, but it has grown quite a lot through testing and feedback from REAPER/Linux users.
v0.26 focuses mainly on more accurate tuning of imported samples and some groundwork for better user-sample handling.
NEW IN v0.26
• Sample Fine Tune
-100 to +100 cents
Default is 0 cents, so existing v0.25 behavior is preserved.
• Improved Detect Root
DrumCloud can analyze a loaded sample and estimate:
- note name
- MIDI root note
- cents offset
- confidence
For example:
F#3
MIDI 54
-23 cents
91% confidence
DrumCloud can then apply either:
- Root only
- Root + tuning correction
Detection itself does NOT automatically change the sound.
Low-confidence results are rejected and do not overwrite your manual Root MIDI Note or Fine Tune settings.
• More precise pitch analysis
Root detection uses multiple regions of the sample rather than relying on one tiny section.
The current detector uses normalized mean-subtracted autocorrelation with fractional/parabolic peak refinement.
A result is only considered READY when all analyzed regions agree closely enough and the correlation passes the confidence threshold.
This means noise, chords, very short sounds or material with strongly changing pitch may intentionally be rejected instead of DrumCloud blindly changing the tuning.
Root analysis is currently synchronous, so on long/complex samples it can briefly pause REAPER. I recommend running Detect Root while playback is stopped.
• User Samples groundwork
v0.26 reserves:
Data/DrumCloud/User Samples/
for personal sample collections.
A full Factory/User browser and custom-folder browser is planned for the future GUI overhaul.
Because of the way the native JSFX file selector works, nested User Samples folders are not yet presented as a proper browser.
For now, WAV files you want directly available in DrumCloud can be placed in:
Data/DrumCloud/
while keeping your organized originals under User Samples if desired.
• Cleaner development installation
I also fixed the development workflow so testing a local Git clone no longer requires copying the entire repository into REAPER/Effects.
Doing that previously caused REAPER to recursively discover another copy of DrumCloud and display a duplicate JSFX entry.
There is now a portable Python development installer which updates the real installed effect instead.
CURRENT DRUMCLOUD FEATURES
• Granular sample instrument controlled with MIDI
• 8-voice polyphonic MIDI playback
• shared 32-grain pool
• velocity-sensitive playback
• waveform display
• click/drag sample positioning
• Sample Start / End range
• Grain Size
• Density
• Density Spread
• Position Spread
• Stereo Spread
• Pitch Spread
• per-grain Attack and Release
• animated grain markers
• per-grain playback direction:
- Forward
- Backward
- Alternate
- Random
• sample movement / scanning:
- Forward
- Backward
- Ping Pong
- Random Jump
- Random Walk
• manual Root MIDI Note
• factory Auto Root mapping for suitable tonal factory samples
• Detect Root for imported samples
• Sample Fine Tune ±100 cents
• stereo Room reverb
• Hall cloud reverb
• octave-up Shimmer
• filtered Stereo delay
• Ping Pong delay
• transparent output peak protection
FACTORY CONTENT
The ReaPack package includes 130 factory samples created by REVERBERA.
All factory samples are CC0 1.0.
It also includes 46 DrumCloud factory presets.
The sample source/license documentation is installed together with the package.
The DrumCloud source itself is MIT licensed.
INSTALLATION WITH REAPACK
In REAPER:
Extensions → ReaPack → Import repositories
Paste:
https://raw.githubusercontent.com/Chmod666music/DrumCloud-ReaPack/main/index.xml
Then synchronize ReaPack and install:
DrumCloud JS
After installation, add:
JS: DrumCloud JS
to a track and send it MIDI.
IMPORTANT – FACTORY PRESETS
There is currently one additional step required for the 46 factory presets:
Actions → Show action list
Search for:
Install DrumCloud Factory Presets
Run it once, then close/reopen DrumCloud JS.
If an existing DrumCloud preset bank is found, the installer creates a timestamped backup before installing the factory bank.
GITHUB
https://github.com/Chmod666music/DrumCloud-ReaPack
DEMO
https://youtu.be/-9T49CBlMso
REAPER FORUM DISCUSSION / TESTING
https://forum.cockos.com/showthread.php?t=310880
A few bugs in the earlier versions were found by people actually testing it in real projects, especially around polyphony and grain boundaries, and those reports have been extremely useful.
One particularly nasty intermittent boundary/grain-start issue was fixed in v0.24.2, and the later releases have kept those safety checks intact.
At this point I’m seeing more people actually using DrumCloud rather than just bug-testing it, which is really nice to see. :)
NEXT / ROADMAP
The next larger area I want to work on is the GUI.
DrumCloud is starting to outgrow the classic vertical JSFX slider interface, so I’m looking at building a more instrument-like interface with:
• proper knobs and controls
• dedicated GRAIN / MOTION / PITCH / SPACE / DELAY sections
• improved waveform interaction
• draggable sample range handles
• better grain visualization
• Factory/User sample browsing
• compact voice/grain/root status
• possibly using the open-source ReaKit JSFX GUI library for the control widgets
Also planned:
• per-voice filter
• filter envelope
• more detailed per-grain envelope shaping
I’m deliberately trying not to turn each release into a giant rewrite. Stability and keeping old presets/projects working is more important to me than adding everything at once.
Linux testing and feedback are very welcome – especially different REAPER versions/distros, unusual samples for Detect Root, preset compatibility and CPU behavior.
Thanks to everyone who has tested it and sent suggestions so far. A surprising amount of DrumCloud’s current feature set came directly from user feedback. 🖤
#LinuxAudio #REAPER #JSFX #GranularSynthesis #OpenSource