Samplerbox 3 fork about Recording [Help Required and appreciated]

ayskura posted Oct 22 '18, 14:43:

Hi there

I decided I want to give a small contribution to this awesome project which I just love:

I want to add sampling capacity to Samplerbox

It's pretty straightforward basically it has a button to GPIO (could be momentary but I prefer a switch toggle) which records a wav file as long as the button is held

now what I would like is to add this feature:

after I press enable the record switch button recording starts only when I press a MIDI Key (i.e. Midi note 36) and save the file in the current preset (overwriting if necessary) with the name of the MIDI note I pressed (i.e. 36.wav) and records for as long as the key is pressed.

Then I can press another key (i.e. Midi note 37) and it records another audio file and save it in the same folder with the name of the relative note (i.e. 37.wav)

Then the user can switch back the record switch toggle to playback mode (Record OFF) and he can play the sounds he already recorded..
Also it would need to record in the current preset folder (which I am not sure how ro redirect)

very simple and elegant solution

This is the bit of code I am adding so far but his only enable the recording of the file

Anyone can help with this adding the necessary code or suggesting what I can add?

Thank you guys <3


import RPi.GPIO as gpio 
from recorder import Recorder 

class ButtonRecorder(object): 
    def __init__(self, filename): 
        self.filename = filename 
        gpio.setup(23, gpio.IN, pull_up_down=gpio.PUD_UP) 
        self.rec = Recorder(channels=2) 

    def start(self): 
        gpio.add_event_detect(23, gpio.FALLING, callback=self.falling, bouncetime=10) 

    def rising(self, channel): 
        print 'Button up' 
        gpio.add_event_detect(23, gpio.FALLING, callback=self.falling, bouncetime=10) 

    def falling(self, channel): 
        print 'Button down' 
        gpio.add_event_detect(23, gpio.RISING, callback=self.rising, bouncetime=10) 
        self.recfile =, 'wb')    

rec = ButtonRecorder('36.wav')


except KeyboardInterrupt: 



jerome posted Oct 24 '18, 04:10:

THIS is very cool.... you may have given me an early start on my summer project!,,,,,

Dave posted Apr 15 '20, 20:26:

What an interesting development Ayskura. Did you manage to improve your code?

I want to do the same but create a midi file or record the notes to be able to transfer them to a digital score.


  (not published)
  I want to post as guest