Sampler help!

Can anyone point me in the direction of any tutorials that cover how to create a multi-channel sampler.

I want to have 16 tracks, that can each load one sample, or refer to a pool of samples. (and display its waveform) (

Then in those 16 tracks, I want 16 empty buffers (think pads, like Maschine) that can take pieces of that sample, and play them in a sequence.

(reversed, mangled, pitched, modulated etc, like the Octatrack)


Can anyone point me in the direction of helpful tutorials to achieve such a thing.

 Im somewhat of a noob in C++ and can't even think of where I would start.




The JUCE Demo shows how to use the sampler classes. That's where I would start.

I know how to load samples and play them, and Ive looked at the tutorials.

But what I need to know is how to have 16 different samplervoice going through 16 different filters, and each being affected in realtime.

Thats more of what Im looking for

one idea is to create your main sampler class that features the filters and everything you need on one channel.. then, in the plugin, you create more object of that class, as much as you need.

For per-voice effects, you'd just add the effect processing to your voice class's rendering code. Then any global effects would be applied to the result, after all the voices have been summed.

seriously, as everyone always says:  start by learning as much c++ as you can.  You can do this while learning Juce,  but it means you'll have to stop your Juce project every time you don't understand some c++ concept (which will be about 5 times every line of code at first :p )

get Martin Robinson's "Getting Started With Juce" book and go through all of that. 

then, try to build the smallest and easiest part of your system that you can.  I'd suggest that learning how to load an audio file into a buffer, and then display its waveform in a thumbnail is a good start.   search this forum for posts on audiothumbnail and you'll find a lot of stuff that's helpful, bits of code that will show you which classes to use, etc.  

pat yourself on the back that you did so well, and then go back to the drawing board... your next task is to make 4 fileloaders that can all be created with the same class code.  or 6, or 8, or 16...or 100
That's a big step - learning how to abstract your code into proper classes that can be reused as many times as needed.

Once you can load x number of files into x number of GUI slots, following the DRY (don't repeat yourself) paradigm (ie, you can't just repeat the code for 1 slot 100 times!) then you'll have enough understanding of how Juce works to figure out a lot of the other stuff yourself.  There's a real logic to how Juce works, and you can't possibly get a feel for it from just have to keep coding and trying new classes when you need them.  After a while, it does start to sink in....

I was probably about the same place you are, about 6 months ago.  I had a basic plan for a project i want to do, and was very noob with C++ (and still know very, very little).  My project is of a similar scale to what you're talking about doing...and it has taken me 6 months so far, and will be a very conservative 6 months more before it is even at beta release stage.  That's working on it between 3 and 4 hours a day while also doing a full time job.  

I dunno...i'm nearly 40, so maybe i'm old and slow. But yeah, this stuff takes time. 


Thanks for all the answers, they were definitely helpful.

Im going to work on just a class that has filters/effects, loads a sample, and displays its waveform.

Then hopefully I can just duplicate that as I need.

Also...any input on how I would go about selecting a part of a graphical waveform, and having it instantiate a new sample based on start and end points I select on the waveform, would be greatly appreciated.