Articles

Kaivo: A Trip To The Well (For Refreshment)

Initially, I was going to tell you that I thought I’d take a brief break from blogging about physical stuff – hardware devices – to spend a little time aiming you at plug-in software that I find compelling. On reflection, I guess I’m not going cold turkey at all. I’d like to spend some time talking about a plug-in instrument that has a software version of hardware at its heart: Madrona LabsKaivo.

The Kaivo (from the Finnish word for “well,” which properly conveys the sense of depth and a source of sustenance) is an unusual beast – in a world of more standard virtual software arrays of oscillators and filters and voltage-controlled amplifiers, it’s a really interesting outlier that marries two very different techniques – granular synthesis and physical modeling- to create something rich and strange. Let’s take a look at the placid surface of this plug-in (or, as normal people call it, the "user interface") and then try to plumb its depths....

Above, Below, and In Between

If you’re familiar with the earlier Aalto analog synth plug-in from Madrona Labs, then you’ll be on somewhat familiar ground when it comes to navigating the user interface. If you're not, here's a little tour.

Like its siblings, the Kaivo has a three-part layout:

  • The bottom half consists of the sound-generating modules, laid out left to right. If you’re accustomed to more old school synths, you’re in for some interesting surprises: There’s a granulator where you might expect to find the oscillator, a lowpass gate you can use as a VCA or a filter (take a minute to notice where this one is in the signal chain, nerd pals), and two physical modeling modules labeled resonator and body where you might be looking for filters.

  • The Kaivo's upper deck sports an intriguing set of modulation sources. Again, Aalto users will find themselves on familiar ground - this is one of the advantages of good interface design for a developer – that ability to bring your learned fluency and habits from one product to another (You're going to have another dose of that when you see the spanking new Madrona Labs offering I’ve seen but can’t tell you about yet): voice allocation and keyboard input controls, a nice sequencer module equally at home for pitch and control (and ready to itself be modulated from external sources), and a pair of trusty envelope generators. But again, the Kaivo is ready with a pair of interesting modules from somewhere off the beaten path that generate control signals: a 2-dimensional LFO and one of the nicest and most flexible and interesting noise sources I’ve seen anywhere.

  • In between is a click-and-drag patch bay, which is where all the action happens: you click and drag to patch modulators to sound sources (the modulators have their own inputs, too, so they can modulate each other), and you’re off to the races. The Kaivo’s patch bay design includes one small feature that I really, really love – the little circles at several connection points are little attenuator/attenuvertors that let you set control ranges. All by itself, that would be a great little feature placed in exactly the right position for mindful patching – but designer Randy Jones has thoughtfully added all of those attenuvertors as plug-in parameters (if you’re looking at the parameter names, they all end in “_p”). Like I said – this is one deep and subtle piece of design.

By the way - if you're not familiar with the Aalto plug-in, you ought to be – particularly if you lean Buchla in your analog synth preferences. The Aalto plug-in’s waveshaping, timbre, and FM will remind you of your old flame the Complex Waveform Generator more than a little bit. It's a lovely piece of work.

Making Some Noise

The granulator module has the bells and whistles that the seasoned Max Forum maven will already know and love – you can set (or modulate) grain position, rates, overlap, pitch, spread, and pan. But the Kaivo has a nifty little trick up its sleeve: some of the Kaivo’s waveforms are actually stacked in twos or fours. And when you do that, the granulator allows you to modulate the output in two dimensions. The X direction is the granular stuff you already know, and the Y axis crossfades between the stacked waveforms.

It’s much easier to see the process than it is to explain it, and the UI for this section of the Kaivo does a great job of that. Once you get the hang of driving one or more parameters using the sequencer or the LFOs and can easily visualize what’s going on, the Max patcher in you will probably start musing on your own gen~-based variants (grabbing live audio in an N-channel gen~data operator and then triggering poke operator-based playback by using functions to scan through the buffer horizontally and vertically....). I had a similar batch of little inspirations while getting to know the Kaivo's 2-dimensional LFO and their noise module, as well. For me, the Kaivo isn’t just a lovely thing to work with – its component parts are sufficiently innovative that it generates ideas in addition to audio.

The granulator (along with the nifty sequencer, LFOs and envelopes as modulation source, of course) is sufficiently deep and entertaining that you can simply pay no attention to the physical modeling features at all. Just turn them off and have at it. Alternately, you can develop a feel for the instrument by starting with just the granular source you want (I am underestimating the amount of fun time here in the interests of brevity), and then investigating that stuff to the right.

Although the humble lowpass gate might seem like its in an odd spot in the signal path, it makes perfect sense – by putting it in line here, you’ve got an additional filter or VCA-style control before you start using the resonator/body modules for shaping timbre and tone.

Getting Physical

A few years back, I wrote an introduction to physical modeling software for Max users. We didn’t have the Kaivo back then, but the article said something that I think is worth repeating: the business of designing a programming interface for physical modeling is very challenging, particularly in the way that parameters in the physical modeling formula tend to interact – designing things so that control of complex parameter sets remains intuitive is where the rubber meets the road. Good designs (and you might want to think beyond software plug-ins for a moment here – the Mutable Instruments’ Elements Eurorack module or Tom Erbe’s work with creating a reverb module with intelligent voltage control in the Erbe-Verb as cases in point) allow you to work quickly and intuitively from the git-go.

What I find compelling about Kaivo’s design is the sense in which the granular engine > resonator > body model works to simplify the task of programming while leaving tremendous amounts of room for innovative timbres. That same sense of design for use extends to the resonator and body modules themselves – they includes a well-chosen and non-frightening selection of options (strings, chimes, and spring for the resonator, and boxes, plates and drums for the body) whose parameters all do “useful things.” Despite the modest number of models, the modulation options provide an amazing amount of possibilities – for example, the body surface modules are two-dimensional, so you can choose where on the surface of the plate or the drumhead to excite the model.

There’s a nice “tilt” control for skewing the frequency spectrum and a chorus thrown, for good measure – but one more thoughtful addition for design – a limiter at the very end, to tame those excitable frequencies.

Some reviewers – notably, Jim Aikin – hit on the notion of doing the original patch development with the resonators and bodies turned off, and then using modulated inputs to them to animate the output. It’s a brilliant way to approach the plug-in, once you get a sense of what the inputs to these portions of the plug-in do.

To that end, I’ve created a “Kaivo Explorer” patch that should help you get a handle on becoming acquainted with the component parts of the plug-in.

If you’re going to play around, you could probably use a modulation source. In this case, I’ve included the Vizzie ATTRACTR module, which outputs the parameters of a Navier-Stokes equation at a fixed time interval. The output is conveniently in the range used by all VST plug-ins, too. But you can use any input source in the range 0. – 1.0 you’d like (you might want to try the Vizzie CYCLR, WANDR, or 4OSCIL8R modules, too). Vizzie generators are great for driving plug-in parameters when using the vst~ object.

The patch includes two ways to play with parameters. The upper row of umenu items contains a full listing of the Kaivo’s parameter set, which allows you to investigate the various sections of the plug-in by modulating that section’s parameters and listen to the results. The second and third rank of menus separate out individual component parts of the Kaivo interface. As you read through the helpful and occasionally quite witty Kaivo manual, it’ll be a quick way to experiment with how individual parameters shape the output sound.

(And don’t forget - any _p parameter tweaks the corresponding attenuvertor for the effect, so you can have the Kaivo’s sequencer generating sequences as you adjust the attenuation of the sequencer output!).

One More Thing – Okay, Two More Things

First, I’d like to make a brief foray into matters of tuning and temperament - to take a moment from my more usual synth geekery to talk about something that Madrona Labs has really done right – support for non-Equal Temperament and nonwestern (or !12tET, as we call it) tunings. If that’s not something you care about, you can skip ahead here.

Both the Kaivo (and Aalto) plug-ins from Madrona Labs support non-equal temperament by allowing you to import scales in the Scala format. In fact, the plug-in comes with a nice selection of scales and tunings from the insanely well-fleshed out Scala library. If you work with a scale that’s not on that list (a Just Intonational variant of central Javanese gamelan tunings, thanks for asking), working with the Kaivo is a joy – you take the Scala scale (.scl) and Keyboard Mapping (.kbm) files you already work with, locate the folder where Madrona stashes their scales, and add your stuff to the folder. No mess, no fuss. It “just works.” That makes the Kaivo a great addition to not only your “interesting sounds” resources, but a fantastic addition if you’re working with tuned non-western percussion timbres.

Thanks, Randy.

Finally, in the interests of thoroughness, I should tell you straight out that the Kaivo plug-in is on the CPU-heavy side. But you know what? I don’t really care. For me, it’s in the same category as the u-he Diva – the CPU cycles are in the service of doing something really wonderful and interesting. I’m perfectly happy to render audio for MIDI channels in Live or Logic or whatever. Your mileage may vary.

As a plug-in, I think that Kaivo does something I value. It repays the investment of your time. Give it a try.

by Gregory Taylor on March 1, 2016

Creative Commons License
Max Gardener's icon

When I click on the link in your article, I am not seeing the download file, Raja. How have I offended?

Pete's icon

how would i go about physical modelling in max/msp runtime (without vst usage)? so far, i've got a karplus-strong and a (pretty naff) flute. is there any more advanced tutorials out there? (i dont know c/gen but willing to learn). thanks.

Max Gardener's icon

waveguide stuff? Well, there's always the models in the PeRColate package....

brendan mccloskey's icon
Max Gardener's icon

Brendan's correct. If you're a Max 7 user, the PeRColate stuff is now available to you as a Package. If you're unfamiliar with Packages, fire up the most recent copy of Max and choose Show Package Manager from the File Menu. You should see it listed. Installing it's a walk in the park.

Pete's icon

holy crap, all these objects! this is superb! thanks!

Roman Thilenius's icon

meta rattle pro, now with distortion.