norns as sampler buddy


This script is a little util that allows to record a sound an play it back at various RPM ratios.

The main use is to replay the sample sped up into a hardware sampler to save memory and add some punch to samples (demonstration of the effect).

It comes with its own fork of the timber engine with some tweaks, so a sleep is necessary.




-- K1 held is SHIFT
-- Anywhere:
--  E1: switch page
-- Main screen:
--  E2: record speed
--  E3: playback speed
--  SHIFT + E1: sampler model
--  K2: record start/stop
--  K3: playback start/stop
-- HW Sampler Instructions:
--  E2: record speed
--  E3: playback speed
-- Dirtying:
--  SHIFT + E1: preset
--  E2: sample rate
--  SHIFT + E2: sample rate (x 1k)
--  E3: bit depth

Next Features

  • 3 band EQ (:white_check_mark: only via params menu, still need a UI page)
  • tuning / timestretching compensation
  • load a sample from disk
  • stereo to mono summing, phase invert toggle
  • instructions for other hardware samplers (SP1200, SP-202…)
  • support for intermediate RPM values
  • IPS units (for tape input source)
  • animations

See also


No release for now, not yet on maiden.


I know its not your priority but a simple slice and save option with clever/fast naming would be great!
Cool stuff btw !

I thought about it, even though it’s not the primary purpose of the script (where a hardware sampler would do this duty).

In the meantime, although minimalist, sam might suit your needs.


Hey there. I’ve been wanting to try this out and just got around to it. After restart getting an error: load fail.



script load: /home/we/dust/code/rpmate-main/rpmate.lua


script clear

MISSING INCLUDE: rpmate/lib/librpmate

SCRIPT ERROR: load fail

/home/we/dust/code/rpmate-main/rpmate.lua:31: MISSING INCLUDE: rpmate/lib/librpmate

stack traceback:

/home/we/norns/lua/core/norns.lua:138: in function </home/we/norns/lua/core/norns.lua:138>

[C]: in function ‘error’

/home/we/norns/lua/core/startup.lua:49: in function ‘include’

/home/we/dust/code/rpmate-main/rpmate.lua:31: in main chunk

[C]: in function ‘dofile’

/home/we/norns/lua/core/script.lua:186: in function </home/we/norns/lua/core/script.lua:186>

[C]: in function ‘xpcall’

/home/we/norns/lua/core/norns.lua:139: in field ‘try’

/home/we/norns/lua/core/script.lua:186: in function ‘core/script.load’

(…tail calls…)

script clear

Need to load this up and see if I’m experiencing the same thing. Really looking forward to trying this!

1 Like

The issue seems to be that you cloned the repo as a rpmate-main folder instead of the expected rpmate.

Renaming the folder should fix the issue.

The reason why it fails is that I include the lib with path rpmate/lib/*. I later discovered that lib/* would also work, making the code agnostic to the folder name. I will update the code accordingly.

Wow! Looking forward to using this with my SP1200 & Mirage samplers

1 Like

That worked! Thank you!

I finally got access back to my MPC 2k XL and was able to test.

It works surprisingly well, even with a youtube video recorded at regular speed and then sped up w/ RPMate.

I tried in the past by feeding sped up youtube video to the MPC and the result was pretty garbage (lots of artifacts).

Also, I managed to steal the 3 band EQ from pedalboard. Its buried deep in the params menu, I need to create an UI page for more direct control.

I bet it would do wonders w/ the SP. I’ve heard it does a similar sound enhancement to the MPC 2000 / S2000 w/ the speed up / slow down trick.

Don’t know about the Ensoniq, but it’s a beast of a machine (early Alchemist sound, IIRC).


could not recall the name of this at first but am glad to dig it up again…what crazy, wonderful idea and ui!