PathSet: Grains - Dev Blog

So between writing manuals and responding to tester feedback on my my infinity plugin I decided to work on yet another plugin. Aka I got distracted X_X.

The seed of this plugin started with a single post from came from @rigo wistfully suggesting I make something "in the granular reverb world". The idea grew after @Omri_Cohen described my free module Ice Tray as capable of being "quite granular".

But before I bore half of you to sleep with my first foray into granular, let me show you all what Cheese Grater can do:

When I started working on Cheese Grater I knew very little about Granular Synthesis. I had done some reading on pitch shifting for Ice Tray but ended up just reusing an open source pitch shifter from Bidoo.

Ice Tray also left me with the painful scars of debugging a multitude of weird clicks. Samples would end early, super fast clocks messed things up, and sometimes samples would be playing while also being recorded to. All of this lead me to very a simple decision for Cheese Grater: A single sample that can only either be recording or playing, but not both. That design constraint shaped Cheese Grater and gave me a good place to learn and explore granulating sound.

The very basics of granular is taking a sample and chopping it up it very small grains and then adjusting how you play those back. That basic description prompted me to start with length and overlap parameters. Length controls how long each grain is and overlap controls how many grains are playing at once. These two parameters form the top section of Cheese Grater.

My method of prototyping these parameters created a happy accident. My prototype knobs were bi-polar, allowing me to set the both of them to negative values. The result behavior was interesting enough that I refined them further. Negative overlap became a more rhythmic drum-machine like sound. Negative grain length was just bazaar. I still am not sure what its doing, but I drew a picture of swiss cheese on the panel and called it good :slight_smile:

image image

The next thing I started playing with was offsetting where the grain pulled from the input sample. After some experimentation I landed on a sine wave distorting the offset as well as some randomness. All of these controls are in the lower left of the panel and I cheekily called it “spread” and drew a knife and some butter for it.

image

The final section I added was a way to layer more grains into the output. This came about as complement for the drum machine and swiss chees settings. Those settings by themselves were feeling empty and dry. So I added a way to add up to 11 times as many total grains. This got labeled “slices of toast”. I experimented with other parameters here and found two that worked well. One adds a delay to the start of each of the repeated grains. The other offsets the position from the sample. Together I found these can create a lot of interesting texture and rhythm depending on the input sample.

image

All told I am really happy with how Cheese Grater is shaping up. I feel like the limitation of record or play is offset by the breath of different parameters it has. That said I’m always open to feedback and improvements so if you are interested in helping test Cheese Grater, please message me directly.

14 Likes

Oh cool! Walking straight into Clouds territory :muscle::sunglasses: Now if you would add “smearing” as well… :wink:

1 Like

Amazing:-)

1 Like

Blooming lovely, so any sample would work in Cheese Grater-Wav or any other? I have loads of them anyway. This once again sounds fantastic and are there 3 other ones to come or you sticking with this one for now?

1 Like

I’ve had the pleasure of beta testing Path Set modules. Infinity is an amazing set and everyone who picks that up is in for several treats. The Grains plugin is truly phenomenal and I’ve only scratched the surface of a couple modules. Very inspiring!

2 Likes

I’m glad you like what you see so far!

For loading samples, currently you have to use a different module to play a sample over a patch cable. And its limited to 10 seconds at 48khz. Hopefully that is easy enough. If not I could work on adding in the ability to load samples from files.

As far as the rest of the modules for this set. I’ve got four total. The next big post I’ll make here is about Sifter, which I’m calling a granular mixer :wink: .

3 Likes

All sounds great then. So Simpler or any sampler would do, does it record it then for 10 seconds a la Ice tray. [silly question]. That should be long enough to mangle it. The Sifter does sound interesting as well, so how do you make a Granular mixer, guess we’ll see soon.

1 Like

i’d try it

1 Like

I so much need more granular modules ;

Amazing, and really cool designs !

1 Like

Time to show off my granular mixer: Sifter. This little gem can mix grains from 4 different sources. Each of the faders controls how often grains come from each source, rather than the volume of the sources. The modules also has 5 global parameters, a built in feedback delay, and the ability to freeze all the channels.

The journey to this point with Sifter starts with it’s tagline: a granular mixer. I knew I wanted a module with faders on it and I wanted the faders to control the grains rather than the volume. But what else it should do, wasn’t sure.

I originally had lot of controls per input channel. I had different granular effects you could cycle through on each input. These actually survived the whole prototyping phase. But once I went to design the panel I realized I had too much. I ended up pulling these effects out into their own module, which I’ll describe next time.

The other thing I had added in my prototype was a feedback delay. I just love the self compounding exploration you can get out of a feedback loop, so I decided it was worth building into Sifter.

The global granular parameters at the bottom of the module were selected from some basic exploration in the prototype. The first two are grain size and overlap, just like cheese grater, though without the negative values. The third parameter is the overall speed of the playback. This one creates some fun time warping effects.

The last two parameters are best suited for when the inputs are frozen. The first controls the playback window, allowing you to select really short slices from the buffer, and the last one is the playback position allowing you to pan through the frozen buffer. I think the module gets really fun when you have frozen inputs and then play around with the faders on each channel.

As before, I am looking for testers, so if this interests you please DM me.

7 Likes

Love to test Sifter.

1 Like

I just DM’d you, tho I didn’t speak about Sifter, but I’ll be happy to test it as well

1 Like

Having just put together a very clouds heavy patch this would fit in perfectly. If you need a tester on an M1 Mac, let me know @Patheros

1 Like

I love you.

2 Likes

Patheros, hope all is well in your world?

How are the ‘Grains’ modules coming along. not heard anything for a while. All the best to you and yours.

1 Like

@ady34 thanks for asking! Things have been good. I took a little break from VCV rack and then when I came back I got distracted making sequencers :). But more on that latter. The testing on Grains has continued thanks to everyone who’s been helping.

Today I want to share the 3rd module from Grains, Blender:

Blender is an experimental module. I think that is best described as a distortion looper. It has four main distortion knobs that can be played like an instrument. While the knob is being turned the module is recording itself. When you release the knob it snaps back and the recorded segment starts playing.

The inspiration for Blender came from playing around with the delay knob on Chrono Blob. I really enjoyed the transient effects that would arise and I wanted to make a module that could capture those sounds. While the effects are technically note granular, I feel like its effect is in the creative exploration spirit of granular synthesis.

Next time I’ll describe the final module in Grains. It is the smallest in the set but it is by far my favorite.

6 Likes

Love it, wonder what would happen when you plugged it into Chronoblob, … even more mayhem. Love what you are doing with these modules!

1 Like

So the fourth and final module in Grains is Spork. I am very pleased with how much I packed into such a small form factor. Spork is a Granular Effects module with six different modes: Tines, Stutter, Buzz, Repeat, Skip and Scatter.

Development wise, Spork was the last module in the collection I created. So I when I started working on it I had a pretty good idea of what I could do with granular synthesis. I decided to avoid any sort of pitch or major time shifting effects, since for an “effects module” I thought the effects should be pretty instant and contained. I ended up prototyping different ways to offset the grain start time. I found six that I liked. Naming them was a fun challenge. Rather the trying to describe the code behind the mode, I listened to them enough and tried to find artful names that evoked how they sounded to me.

Next I needed to add some modulation. I started with grain length and overlap since I had used those before and they were general to all the modes. But I wanted more. I thought I could add some mystery to by adding two more unnamed parameters that vary depending on the mode. Two felt like a good number of mystery parameters. Both in terms of how much space I had on the panels and in terms of giving you a good field of parameters to explore.

The next question was how to select the modes. I thought about using dial to morph between the two effects. But since generic mod parameters were already a fun fluid exploration, I thought drawing some hard boundaries between the different modes would make for a nice contrast. So I took inspiration from Chrono Blob and its push button and LEDs mode display.

I thought that would be the end of it, but nagging desire to allow you to apply multiple modes lingered in my head. The knob to morph between the modes would be really easy and would fit nicely into the panel I had already designed. But what if someone wanted to morph between two modes that weren’t adjacent to each other? I got stuck on that for several days, until it finally hit me that I could have a knob for each mode. But that would be a lot more space, and by that point I was in love with the tiny spork I had drawn on the panel. So to not ruin the small panel design, I learned how to make an expander so that I could add multi-mode operation to Spork.

And that is the complete Spork package.

We are getting close to completing the testing on Grains and I anticipate it being available for purchase within the next few weeks and I look forward to seeing what people do with these granular modules.

8 Likes

This one is terrific :wink:

i ve attached a quick made example !

cheers Untitled.vcv (6.1 KB)

1 Like

Very excited for these to be released!

1 Like