C-C-Combine is a corpus-based audio mosiacing application, built in Max/MSP, based on concatenative synthesis. Concatenative synthesis is a technique for synthesizing sounds by concatenating short samples of recorded sound. It is essentially a type of granular synthesis that, instead of playing back grains based on position/windows, plays back grains based on analysis of incoming audio. In order to do this you must have a corpus (the pre-analyzed body of sounds) and an input sound source (either incoming audio or file playback).
Here is a video of it in action.
Back when I started programming what would eventually become The Party Van, I envisioned building something like C-C-Combine. It was very much out of my programming reach/understanding at the time. C-C-Combine is my first exploration into “full on” concatenative synthesis, that uses a pre-analyzed corpus of samples. I was originally inspired to do this by collaborator Pierre Alexandre Tremblay, having heard his Sandbox #3 in action, which is based on CataRT, an open source concatentative synthesis application written by Diemo Schwarz. (You can read more about PA Tremblay’s concat setup/exploration in this paper co-written by him and Diemo Schwarz.) I also came across Mogees instrument, by Bruno Zamborlin, which sounded very exciting to me as, like in PA’s setup, was based on real-time audio analysis.
Aside from the desire to learn and code something that did exactly what I wanted, the impetus of creating C-C-Combine was that this type of synthesis and sound production is difficult to get into. CataRT is freely available, but it requires installing a large framework/extension on top of Max/MSP (FTM&Co). It is also incredibly deep/powerful, but not especially tailored to live performance. Mogees, as far as I can tell, is not available at all. C-C-Combine is freely available to download (link below) as a Max/MSP patch, so that you can edit/view the code (or use it as is). It only uses a few externals by Alex Harker, which come included with the download. Harker’s externals handle the audio analysis (both real-time and offline) as well as data storage/lookup.
I made every effort to make the application as user-friendly as possible with a thorough “quick start” guide in the ‘info’ window and ‘hints’ when you hover over anything. Corpus analysis/storage/loading is no trivial task, but it doesn’t have to be difficult either. The program is primarily made for real-time concatenative synthesis, so most of the features are built towards that end, but I do plan on expanding the program, as well as building an adaptation of it into The Party Van.
CLICK HERE TO DOWNLOAD THE PATCH
Here are my own personal corpora (multiple corpuses) that you can download and use with the patch right away. Just drag the audio file onto the main window of C-C-Combine, then select the analysis file when it prompts you for it.




[...] C-C-Combine is a corpus-based audio mosiacing application, built in Max/MSP, based on concatenative synthesis. [...]
How much MAX do you need to run it? Looks like MAX runtime is free…
It will run on the runtime.
AWESOME!!!
great !
it’s great ! thanks a lot for sharing this.
I’ve been on the beta list of mogees, and all that I can say is that it’s far from being “user friendly” at all.
you seem to play the piano really well too
Great work, thanks for sharing Rodrigo, bests.
Wow, amazing work! Love the glitch-painting segment. Thanks for sharing!!!
WHOA! This slays. I got it set up to play ruined metal percussion based on the noise of my computer’s keyboard. I could type forever. Very, very nice work – thanks!!!
i would like to stream combine to ableton but when i start it up with max 6 runtime, it immediately kills ableton’s connection with my usb to midi interface which is handling something else. is it just my setup (os x 10.6, live 8.3.4)? tried turning off overdrive but no use, have to restart ableton or macbook pro.
great work!
That’s weird. It might be that both are trying to get hold of the same MIDI controller or something. I’ve not had any experiences with Ableton though, so I’m not really sure.
Maybe try starting up Combine first, and then Ableton?
As a last resort you can just record the audio directly in Combine and import it into Live afterwards. Not ideal, but at least it’s something.
thanks for the quick response. i will try the same setup with the midi ports of an external firewire audio interface tomorrow. it could be due to unexpected issues with the midi to usb connection. i’ll tell you how it worked out.
Hi, I’m trying to get this to work as it looks and sounds very interesting. I can’t seem to find any information on how to get an analysis corpus out of an audio file though and what kind of data C-C-Combine expects within the corpus.
Is there a max patch/external that makes this process simple?
It’s built right into the patch. Click on “create corpus” at the top left and that has some instructions on how to go about making it. (You drag an audio file onto a window there and when it’s done analyzing it, it will prompt you to save the file).
The data the patch is creating (and expecting) is a text file that has entries for file length, window analysis size, how many analysis entries there are, the minimum, mean, and maximum for each parameter, then a (super long) list of the actual entries which are formatted to be : time, loudness, pitch, centroid, roughness;
You don’t have to deal with or think about that stuff at all, you just drag the file and the patch does the rest.
Here’s the start of one of my corpuses to give you an idea:
filename, data_noDC.wav;
duration, 322853.09375;
windowsize, 20;
units, 16140;
minmeanmax, -101.789291 -17.129576 0.640727 0. 104.866898 139.496353 67.134483 122.38839 133.072449 0. 0.02617 0.532681;
0, -79.599846 0. 107.66629 inf;
20, -57.059647 62.140152 107.069786 0.001713;
40, -21.915905 62.348877 117.077682 inf;
60, -14.169678 40.757439 119.684235 0.002578;
80, -14.843563 112.763077 122.251961 0.017995;
100, -21.602682 112.776871 116.721855 0.00102;
120, -24.025963 0. 120.109718 0.000712;
Aha, thanks very much Rodrigo for the quick response. I must have missed that button on the GUI.
I’m now getting the error message in the max window: “entrymatcher: entry does not exist” after being prompted to save the generated corpus.
Do you just see it once, or many times? Open up the setup window and turn on ‘audio interrupt’ and try again. It basically analysis everything, and dumps it into another object in order to save it to disk but it can run into problems as there tons of entries.
If that doesn’t make the problem go away, it should still work fine as it’s only the last couple entries that wouldn’t have gotten saved, but it should analyze/playback just fine.
It works! I still get lots of the same error message though, even with audio interrupt enabled.
Sounds great though!
That’s weird. It might be CPU/computer load specific. I had that occasionally with mine but audio interrupt fixed it.
Good to hear that it works though!
Working great, and is pretty easy to use. Thanks for sharing!
Max 5 or Max 6…?
It’s Max6. It should work in 5, though I’ve not tested it. As far as I can remember there isn’t any gen or other Max6 specific bits.
Hi
The C-C-Combine is very clever.
Thankyou for letting me view your patch I am sure it will be very instructive.
Geoff
I’m trying to analysis an input .wav but it goes straight to save but doesn’t load up the audio into the progress window. Is there anything obvious I should be doing?
Are you dragging it into the main window, or the ‘create corpus’ window? (Gotten to by pressing the ‘create corpus’ button).
What you described is what happens when you drag an audio file into the main window (as it prompts you to load the analysis file).
Also make sure you have audio/dsp turned on in the setup window.
Brilliant! I’ve been looking for something like this for ages. Thanks Rodrigo!
cheers, Dan
Glad you dig it. You guys make amazing sound libraries!