New features

Peter posted Jun 10 '15, 14:17:

If there would be code to only use one midichannel at a time, would be great.
If one could have split keyboard to use two sounds would be even greater.

I have an idea of using at least two RPi in the same box (19" rack) so to separate midichannels would be awsome.
I´m thinking to use a adafruit 16x2 LCD to show not only number but the soundname!

joseph posted Jun 11 '15, 00:05:

Thanks for your propositions Peter!

To use only 1 midichannel at a time, it's really simple: add this line of code here:

if messagechannel == 2:      # uses Midi channel 3 only  (yes you have to add + 1)

Splitting the keyboard isn't difficult too. The main question is: where would you like to set up the split? In the definition.txt file? Or with hardware buttons + menu?
I haven't thought about this, but it's something possible.

Cahes posted Jun 11 '15, 15:23:

Hi, Joseph & Peter.

Great ideas!

I'm not shure 'bout this but...

I guess is possible to Split two or three midi channel in a single RPi board if we create a kind of "combo" preset with this instruments mixed.

With the Velocity guess the same, then we could get more instruments in the same combo, as ex.:

messagechannel 0: velocity 0 to 40 & keynote c0 to b2 > Finger_Bass;
messagechannel 0: velocity 41 to 80 & keynote c0 to b2 > Pick_Bass;
messagechannel 0: velocity 81 to 127 & keynote c0 to b2 > Slap_Bass;

messagechannel 1: velocity 0 to 70 & keynote c3 to b5 > Warm_Piano;
messagechannel 1: velocity 71 to 127 & keynote c3 to b5 > Brite_Piano;

messagechannel 2: velocity 0 to 100 & keynote c5 to b7 > Strings;
messagechannel 2: velocity 100 to 127 & keynote c5 to b7 > Orch_hit,

Then we need to make a routine to put a copy of the sampler wav files to combo folder.

Do ya think is it realy feaseble?

My skills in Rpi and coding is just crawling... I'm a musicist and eletronics enthusiast an this Project is a must!!!

Can you send me some suggest to code this and make this possible?
How is the best way to start to codding and soon, dominate the RPi resources (and the whole world! AH, AH, AH!!!) ???

Thx guys!

Peter posted Jun 11 '15, 15:46:

Weee, this is fun. Today I orderd a:

to expand possibilities for changing split, sounds ...
Using keys as up, down, select in a menustructure I think will be great!
I´ll be back ! :-)

Peter posted Jun 11 '15, 15:56:

Hi Cahes.
I think with the display I orderd one can make a split using the MIDI keyborad.
e g select in menu split, then touch the fist key where the split should be and then select sample to load. Or?

Cahes posted Jun 11 '15, 21:54:

Peter ... U rocks!

Great idea. Getting a key selection from MIDI is awsome. And I guess the best, fast & furious way to setup a combo preset.

Then, I imagine, using up and down buttons to modify the last key get from MIDI.
Maybe, creating a time-based routine to confirme or else, pressing next button istead.

About velo, I thing the same could be implemmented.

Figure out, creating a setup routine to make a combo, 4ex:

1) when Select a empty preset ask if u want create a combo preset, if yes;
2) select the first instrument (must be alread created and ready on its folder). A checkup routine could be a must. If ok, set this step and start next one.
3) ask for the lower key from MIDI on LCD. When get a key by MIDI, set step and go next.
4) when pressing up or down buttons, change its key assignment.
5) ask for the higher key as item 3.
6) when pressing up or down buttons, change its key assignment (as item 4).
7) ask minimum velocity on LCD. When get a key between selected zone, show its velocity.
8) when pressing up or down buttons, change its velocity assignment.
9) if the key its outside the selected zone, ask if want to join another instrument and wait 3 secs. Read up an down buttons and change pre-elected "NO" to "Yes" and goto next step. Else, if no button pressed until 3 secs, start the "combo-mounting" routine.
10) repeat steps from item 2 and on.

I think teorically, there's no limit (except the SD space limitation) to join instruments. Then I gues the chekup routine must be able to get the amount of SD memory from the preset selected to join with combo and verify if there available space on SD...

Finnaly, to make a "mountin-combo" routine, the steps must be like:

1) Ask the combo name on LCD and read the up and down buttons to change chrs.
2) verify if there's no other preset with same name. I think to make diff between Combos and Presets names, Combos names must be between () or after "#".
3) make folder like /nnn #COMBO_NAME or /nnn (COMBO_NAME)
4) copy wav files from selected preset inside the key zones and velocity zones to combo folder.
5) show progress bar will be show!!!
6) at end of this, show stats of SD will rock! and pleny usefull to controlling the resources from presets and combos!! Saving last stats with preset names, amount of SD used an available on a folder like \RESOURCES could make the mounting-combo routine easiest and fast responsive.

I think with this improves the Samplerbox Project will be a really Pro, with features
to attend higher expectancies musicians and with a broken pockets, like me!!!

What U think about this??? Let me know.


Justine posted Jun 15 '15, 11:57:

I love the split / combi idea where by you set the zones by pressing the start and end point keys on the keyboard , But for a display as this project is obviously growing would this not be better ?
Its a 5" 800x480 LCD with touch screen.

That way when new features come you wont need to change displays etc as it can all be done on screen with touch .

joseph posted Jun 16 '15, 09:27:

Nice ideas here!

@Justine I like the idea of LCD touch screen (then we can even remove the buttons etc.) but I think this would make the box out of "99€ budget" that I really would like to stick on. Do you think we can find some < 20$ LCD touch screen? If you find some on ebay and/or have some time to try it, it would be great :)


@Peter I also thought about 2x16 LCD like this:

but it reminds me of electronic projects I did maybe 10 years ago, and I'm not a big fan of this "look". (well, I know that the "look" of the SamplerBox is not cool yet, but it will evolve ;) )

Maybe we could look at the screen Teenage Engineering OP-1 uses? It seems to be a 320 x 160-pixel OLED, but it's not a "touch" screen.


@Cahes Yes, this would be a nice way to make a combo, once we'll have a better screen!

justine posted Jun 17 '15, 20:04:

Well with a Pi 2 , adafruit 2.8" tft which has 4 gpio connections for buttons and a rotary encoder plus the dac you could still make it under £100 which is still good considering when you check it against the old Akai S3200 etc.
Think i'm going to give the above a go and look into a gui using Python / TK .

Aidan posted Jun 26 '15, 21:21:

Is a sustain pedal over midi supported?
Because this would be a great add-on to any piano sample.

joseph posted Jun 26 '15, 23:32:

@Aidan : sustain pedal is already supported, since the first version.

Very important for piano indeed :)

Aidan posted Jun 27 '15, 02:05:

Thanks Joseph! The stuff you are doing on this site and for the raspberry pi community is really rather amazing!!! It's so great that you are sharing all your knowledge on this stuff with the world!

Anyway I have another question:

What are the other controllable factors off midi?(ex: pitch bend, mod wheel, volume control, etc.)

Also is there a way to adjust the velocity range or level software wise?

Thanks again!

Aidan posted Jun 27 '15, 06:48:

Haha OK one last question:
What is the latency for the audio output? (using a raspberry pi 2 and usb DAC) (is it too noticable?)

Thanks again again!

joseph posted Jun 27 '15, 10:24:

@Aidan thanks for your nice words :)

Pitch bend, mod wheel, volume control are not implemented yet... But they will!

About velocity ranges, yes it's already possible: you can program velocity layers by creating a definition.txt file for each sample-set. Here is how. And here is a more interesting example with velocity.

To see an even more advanced example of definition file / polyphony handling, please download the piano sample-set and see its definition.txt file.


About latency, it's really not a problem at all, it can be made as low as all other hardware synthesizers / samplers (see Martin's latest tests here that speaks better than some words ;) :

tommy posted Sep 1 '15, 15:02:

How about this?

(amazing stuff Joseph - thanks so much - currently running my SamplerBox (pi only) from a zaquencer using program changes)

Ayskura posted Apr 3 '17, 04:36:

would it be possible to make it sample? I mean record and play what recorded in the keyboard?

Ayskura posted Apr 3 '17, 04:37:

thank you for this incredible build!

Nate posted Apr 6 '17, 03:21:

Hey Joseph, where exactly do I add that single line to select a single channel?

if messagechannel == 2:


  (not published)
  I want to post as guest