Cabbage Logo
Back to Cabbage Site

Partikkel example

Hello everyone, I was just wondering if there is a cabbage example making use of the full partikkel opcode anywhere ?

This could be a starting point:

It has some of the parameters hooked up with Cabbage widgets.

As it is meant to be used in Unity it is not ready to go.
To produce sound you will have to comment line 43 and uncomment line 42.
Also you will have to route a1… a8 (lines 162-169) to the output using outs.

1 Like

Hi meme,
I have many examples, but the variations depend on what you want to use it for. As a synth or as effect, and within those also many variations. What would you like to have?

Hello both, thank you so much for your answers.

Thanks @giovannibedetti will try this out.

@Oeyvind, i think I am more interested in synthesizing sound than using it as an effect. Among other things i’m very curious about trainlets with the possibility of modulating the number of partials, if that corresponds to anything your end ?

Thanks !

Hi, sorry for the latency. My fault, completely forgot.
Here is an eaxmple of trainlets, I have made comments where appropriate for trainlets.
As you ask for modulation of the number of partials, I added that. Do note that it will step as it adds more partials. Not an artifact, as it does not create a click. But you can hear the step-wise difference as partials are added one by one. If you want a smoother transition, it is better to keep a high number of partials and then modulate kchroma. For example
knumpartials = 10 ; number of partials in trainet
kchroma line 0.5, p3, 4 ; chroma of trainlet

all best
Øyvind

partikkel_stripped_trainlets.csd (4.4 KB)

Hi, I tried to run this file, I saved it as “partikkel.csd”. I don’t hear any sound, these are the messages in the console:


Am I doing something wrong?
[Cabbage on Linux]
Thank you,
t

It is expected since table 100 is created in Unity and sent to Csound. Try uncommenting line 42 and comment line 43. You will need a “fox.wav” file in the same folder of the csd.

Thank you. I put a fox.wav file (a 4 second piano sound) in the same folder, and edited the comments.
When I run it (I hear nothing), it stops here:
[Cabbage 2.8.162 on Ubuntu 22.04]

Try this:
partikkel_mod.csd (8.0 KB)

Yes, it works, thank you.
Nice.

A question: is there a way to manipulate directly the sound of a MIDI keyboard (using its sounds) played in real time ?

Thank you,
t

Glad it worked, just made a few tweaks mainly to use a basic two channel (stereo) audio out.

To your question, it’s possible but I’m not sure Partikkel is the best candidate for real time performance as it may be more demanding in terms of cpu than other granular opcodes such as grain/grain2, sndwarp etc. See:
https://csound.com/docs/manual/SiggenGranular.html
I have no idea. Perhaps someone else can chime in on their experience using Partikkel in real time & perhaps has an example.

I think all the granular synthesis opcodes only read audio from a table so you’d need to record the live audio to a table in one instr and start the processing/playback in another a few ms later.

You can read the basic concept here:
https://flossmanual.csound.com/csound-language/function-tables#a-rate-example
Ex. 03D07

The results could depend on your setup & require some tweaking to get decent results.

Best,
Scott

Hey @Oeyvind ! Thanks a lot and no worries at all for delay. Glad you remembered anyways :slight_smile:
I had a look, it gives some very nice sounds. I should perhaps have been more explicit - I have no knowledge of Csound, which is why i was asking about this in the Cabbage forum. For better or for worse years ago when i had to choose I decided to learn Supercollider. But playing around with the numbers here it’s actually amazing to see how cleared up the syntax is in Csound. A little bit jealous :confused: In SC we need plethora of brackets of all sorts, which make it hard physically on the eye, fingers, hand… So kind of tempted to give this a go even though time is unfortunately quite limited. Anyways thanks so much for this. Let me know if you have an example in store with the widgets coded in but really no worries if not I could at least get an idea how this works. Best

thanks ST !

Hi, just to chime on on performance. Even if partikkel is the most complex granular opcode, I think it does not consume more cpu than other, simpler opcodes. The main processing cost for all of them is the reading of the source audio to go into each grain. So, if you want to create many overlapping grains (very long grains in relation to the grain rate), it will consume more cpu. Very similar to polyphony, i.e. using several sample players simultaneously. As far as I know, all granular generators must do this in a similar fashion. Perhaps small differences regarding the interpolation technique used. Due to Thom Johansen’s careful implementation, partikkel is very efficient and optimized. I have not made benchmarks to compare processing load under same settings with other granular opcodes, so of course trust your own judgement. I think it would be a nice bit of work to set up a true comparison (nice as in useful, but also ‘a nice bit’ as in ‘a significant amount’ of work).

All good. The plugins I write for myself are usually for specific projects, so I’m not sure exactly which one is more suitable to share. But I found one example from a few years ago that you might use to explore some of the settings via GUI. If I recall correctly, I wrote it to investigate combinations of different “classic” waveforms (sine/saw/etc) inside grains, also combining it with trainlets. There is also phase and pitch control for each source waveform, and a parameter I called “inc” which slowly changes the starting phase (I don’t remember exactly why I included it, but I think it might create interesting slow timbral evolutions). There is also FM in grains, and also FM of the grain rate. These produce pretty grungy sounds, and I am about to investigate those more in depth again soon-ish. And there’s an attempt at a waveform scope display. The csd was written in a text editor I no longer use, so the tabs and spaces in the code is all over the place. Sorry, very messy. I did not have time to clean it up now. Just thought I’d share in case it could be useful for you.partikkel_synth.csd (12.8 KB)

yes thanks so much ! will check it out later, that sounds really perfect. thanks also for sharing even though you think it’s messy, i don’t think i will be shocked.

Thanks for sharing this @Oeyvind :slight_smile:

Hey again @Oeyvind, i just tried it out but unfortunately am not getting any sound. I’m getting what seems like the usual camelCase error, but also this, which might the issue ?
“Warning: The current pluginId(”") (Line:1) is not valid. A form pluginId() must be an alphanumeric string of 4 characters."

partikkel_synth.csd (12.9 KB)

You need to play via MIDI. I’ve updated it and added a virtual keyboard. Thanks again to Oeyvind for sharing this :+1:

oh i see ! Ok thanks a pile to both you !