GRID Plugin Project - a better 8-channel sampler

Hey all - ok I learned a lot from playing around with my initial time stretch plugin. Not at all ready. But I took that knowledge and pivoted to one I am calling Grid.

Bottom line I hate hate hate. The factory sampler. Kinda buggy. Not fast. So I am making a better one. (Sorry Bert). No offense.

8-pad sample player with pitch, time stretch (kinda basic granular approach), sample edit with start, end, and trim. Think Bitbox but stripped down and fast. Very very fast to setup.




Load WAVs, hit buttons 1-8, they play. That’s it.
∙ 8 pads, one-shot or loop modes
∙ VU-colored waveforms per pad
∙ Red progress fill sweeps across each pad as it plays
∙ File browser which I will be improving. To have some indexing stuff if I can. Like tags would be great. Also the browser remembers where you left off. So if you have a certain drum kit in a folder. Easy to access.
∙ Stereo out, per-pad volume, pan, and mono channel out. So if you want it outside the stereo mix.
∙ Built with JUCE + SSP SDK, cross-compiled from Ma

Each button corresponds to a pad to trigger. Works.

Each page changes the parameter for the encoders. The first encoder is always the navigation for the grid. And the arrow keys also. The left shit and right shift navigate the tabs.

Now if @thetechnobear would donate his midi page development. This could be perfect.

It sounds really really good already.

You use the encoder. Highlight a box. Push encoder. Select wave file. And now that box has the sample in it to play. That’s it. All show all the time. No matter the page you are on

3 Likes

if you are interested in trying this early and helpjing me test and suggest…

GRID.o is already build and in releases for ya… just put it in your plugins folder and restart

o wow, this is fast (and easy)

so not really a sampler but a sample player, right?

will it do/play DC voltages too ?
i read +/- 24 semitones as 4 octaves but that’s probably me :grimacing:

any place where we can buy you a beer ?

Im happy to help, but only if we keep the tone positive… too much negativity in the world, i avoid it!

humble suggestion, Id focus on one at a time - I learnt so much from each plugin I wrote, that I ended up almost rewriting each of them, after Id created a few - not just the technical side, but also finding a UX that suited me.
that said, I will say this seems a simpler module, than your other, so perhaps is a better first module :slight_smile:

my source code is already 100% open sourced… so you are free to use.

note: I just added AGPLv3 license, used due to JUCE dependancy/license.

unfortunately, as you’ll see its not quite as simple as just using the midi page, as you have to change where things like button messages are routed, and start capturing parameters (for learn), theres a few different things going on. not ‘difficult’ but requires a bit of architecture.

so your choices are :

a) look at my code, and use it as ‘inspiration’.

you might be able to take code snippets, or just see how it works - then implement your own form of it.
if you have simple requirements, this could be straightforward.
but as things get more complex, you may stumble into issues which my framework already had to address.

but, its not a bad first step!
btw: SystemEditor is basically where this is done.

b) start using my ‘framework’

as my code is open source, you could use my framework, which cover this.

my plugins are all built the same way off this framework, so basically when I want to create a new plugin all I do is copy a simpler one as a starting template, edit a few things, and off I go, and my plugins are consistent enough, this is very simple… and I get things like midi support for free.
(just don’t use SWAT/TRAX/DUAL as these are very special cases)

ofc, thats easy for me to say, as I know the framework etc, and whats needed to do, but it is ‘undocumented’ :wink:

perhaps the easier approach would be for you to look at my RNBO templatee

this has the same framework, but is already stripped down, and has scripts to create new modules, even without my ‘branding’.
and, whilst it was built for RNBO, thats really just the scripts/templating, nothing intrinsically is tied to RNBO ! - see my topic on this forum about ‘how to use’, and build initial demo etc.

if you looked at the (generated) demo, it’ll be obvious the RNBO bits, so you can just strip those out and add your own custom code.

its not quite the same, as I do, but its likely simpler, than looking at my plugins.
(and if you get familiar with this rnbo template code, it would help you understand my main repo, as its the same framework)

important notes:

I do not ‘support’ this framework, nor accept changes - its a personal framework,
but you can use as-is, and adapt if you wish.

sorry, but I just don’t have the time (I work on lots of projects) to start helping out.
also, I do make sweeping changes occasionally, and updated my plugins - so dont expect updates / backwards compatibility.

this creates a risk for you, as its more code you are unfamiliar with, and have to get to grips with.
Id not say its overly complex, but hard to say, as I created it, so obviously know its ins and outs.

ofc, if you use my code, then I expect accreditation and a link back to my repo
…as is normal with open source code.

again, its not what I don’t want you to use my code, rather I just want to set expectations.

Which path?

the framework does cover quite a few features, and handle a f ew oddities, and is pretty flexible, is not completely ‘agnostic’. I use it so that my plugins have some consistency.
great for me, different developers have different ‘tastes’.

also bringing in a framework, means you bring in a lot of code that you are unfamiliar with, and that code is ‘custom’ and undocumented (unlike say Juce), and I cannot support it.
so thats a big trade off…

it depends how much you value expediency really…
I personally, tend to avoid others frameworks, for these reason, but others think differently.

its why I share what I do … give other developers options, either to use as inspiration, or to take wholesale and make it their own.

Probably what I would do is…
look at my RNBO project, and create the demo module.
this will give you a nice small code base to look at using my framework, without too many bells n’ whistles. you can use that to see how it all ‘hangs together’ and see if can you strip out the bare minimum to get what you need. I suspect mostly its the classes in modules/common., modules/common/ssp.

sorry, I know this is more complicated that just ‘here, use this class’,
and whilst, Id love to say, sure, I’ll help you use my framework, lets make it work - I just dont have the time, so need to set realistic expectations.

that said, if you just need simple midi input, it may be just easier to see how I achieve this and go from there and do it yourself, and so keep complexity to a minimum.

good luck , have fun…

i don’t find the grid.so plugin on any page or tab in the Github

where does it reside?

0.1.3-beta is being worked on from
0.1 1-beta Gates work. You can trigger pads from sequencers now.

Big changes:

  1. I/O grouped by pad in the network view (P1 Trig, P1 Pitch, P2 Trig, P2 Pitch…)… Renamed Gate to Trig because that’s what it is

  2. Smart Home in the file browser – hit enc 3 in main tab to go quickly to “smart” home. Which will show your Samples folder, Kits, Recordings, and recents
    — working on kit files. So you can save your kits. And recall them quickly.
    — Clear Pad function so you can actually unassign samples now

  3. ContextBar only shows what you’ve changed per pad. Clean pad = clean bar. Elektron param lock vibes
    ∙ Mono bus architecture matching TheTechnobear’s pattern. Thanks Bear

  4. AGPL-3.0 license

Coming next: per-pad fade in/out, kit save/load (.kit files), recording to pads, MIDI tab, per-pad filters

1 Like

Ah ok. So I publish releases for all my
Builds to make things really easy. Releases are on the right.

So the current release 0.1.2 isn’t really patchable yet in the Io and a few things have changed for usability that are I consider really big improvements. But I definitely want you to be able to see what it’s looking like so 0.1.2 is in the releases.

I get home from physical therapy in an hour and I will publish 0.1.3 which that one is patchable in the Io

1 Like

Let me explain what I mean catchable I mean the input like patching sequencers to it that’s in this 0.1.3. But you can patch it out output.

But I have all that fixed now like I said I just have to get home from physical therapy

1 Like

i find the release alright, and inside the zip or tar archive are the whole project but not the file i’m looking for, the plugin .so

Huh! Let me
Check.

You’d couldn’t need a zip file. Just the .so.

Order up!

1 Like

Here it is.

Be gentle though. I need to publish the latest one which is totally
Usable

1 Like

When I said be gentle I mean. Because there are a lot of fixes and improvements. In 0.1.3

1 Like

i only see this:

when i download and unzip the source, i get a whole tree, but no GRID.so inside

I am so so sorry – I was in physical therapy and must have overlooked something.

Anyways I got home and released 0.1.3-beta

1 Like

now there is a grid,so file no archive to download… nothing like that

1 Like

Also routing is working in this one

You’ll see a bus bar I created (visualization I am using for testing)… That will probably be removed in the 1.0 prod release

1 Like

I Am currently working on a record to pad.

So in the first tab you’ll have three params. One is arm, the second is source, and the third is type which will be instant, next bar, or threshold.

If used instant than arm will record as you push it. And push arm again to stop.

And the target is the select pad.

However. We could have a special record tab which you could specify what input to what pads. Or a record all. So like the Octatrack where you can record to multiple busses (in our case pads) at the same time.

We will have a filters tab. To use a filter per pad. Like Elektra.and kinda like Bitbox. But this have much better filter types.

I am considering a config tab. This tab will be the only page not showing all 8 pads. Inner you’ll be able to set like auto play recording after it is done. Also considering adding Assimil8or like features like Zones. Which would be added per Pad in the config area.

But this is all up to what everyone wants. I al really hoping I get some
Good suggestions because I’ll consider everyone’s suggestions. Obviously if it goes in or not. Is also a think we would all weigh in on. But definitely encourage suggestion. Really hoping on them.

1 Like

Beta 0.3

works, kinda:

the font (not only in the browser) is really really small, can it be bigger ?

that aside, i think i see the length of the sample (in the browser), why not some other properties ? (bitrate, frequency, st/mono/nr of channels - to name a few)

is it possible to trig a preview, play the sample while browsing ? (to know which one i’m choosing)

there’s no patch point for the sample input, right?
(what do you mean with " the routing is working"?)

pitch & timestrech algo’s are very nice! (musical)

there’s no return to zero/jump to max shortcut for any parameter?

i do dig the 24 boxes but what are they for ?

i would place the 4 parameters just above the encoders, not smear out over the width of the screen
(now i 'm always searching for the correct encoder to change my parameter - could be mussle memory though)

  • when i connect an INPUT module to the GRID module, only P1 Trig & Pitch // P2 Trig & Pitch etc etc are available ; these are CV destinations, where does the audio goes into ?

when a sample is set to loop, i cannot stop it (anymore) - one (button) trig (re) starts it, that it (i need to re-set the sample to on-shot to stop it)

pan parameter works but maybe there’s an alternative mode : when you pan a stereo sample to the left or right, not sum both channels, but only play the information that is in the L/R ch (respectively) ?

we need another page in the wiki

when you create a new sub/chapter for your plugins i can gather all relevant information/documentation

hereso: Home · TheTechnobear/SSP Wiki · GitHub