hardware and software for electronic music 

randy's Recent Posts

Thu, Mar 09, 2017, 16:23

That doesn't sound familiar. MPE has something similar but I'm not sure if they use the same control #.

Fri, Jul 31, 2015, 10:24

KEY outputs by protocol


All Madrona Labs synths can receive notes and control information over one of three protocols: MIDI, MPE, and OSC.

MIDI stands for Musical Instrument Digital Interface, it's been around since 1983, most synths understand it and you are probably familiar with it.

MPE, which stands for Multidimensional Polyphonic Expression, is a more recent way of using MIDI to enable new controllers like the Linnstrument, Continuum and Soundplane. The short story with MPE is, each note gets its own channel. There are a lot of details to enable this to perform well---see the MPE specification (currently at expressiveness.org) if you are interested in them.

OSC stands for Open Sound Control. It's a very cleverly designed protocol that takes advantage of what modern computers and ubiquitous networking hardware can do to provide high-resolution, jitter-free connections. The newest protocol of the bunch, not as many synths and controllers understand it as MIDI, but it has a bright future ahead of it. For more info, see http://opensoundcontrol.org.

KEY module signals by protocol

Selecting different protocols in the setting (gear) menu of Madrona Labs instruments causes different kinds of incoming information to be turned into signals and sent out of the KEY module. Here is a table of what
information each protocol sends.

        out1    out2    out3    out4    out5    out6    out7    out8    

        ------- ------ ---------------------------------------------------

MIDI    pitch   gate    vel     vox     after   modcc   modcc+1 modcc+2

MPE     pitch   gate    vel     vox     after   modcc   cc73    cc74

OSC     pitch   gate    vel     vox     z       dy      x       y

pitch: The pitch of the played note, on our familiar 1.0 / octave scale.

gate: High while the key is held down, low otherwise. Kaivo only.

vel: This signal represents the velocity of each note. It goes to a new value when the note starts, then stays at that value, even after the note is released. Very useful for controlling sounds that may ring out after the key is released.

vox: Which voice of the synthesizer is playing. Voices have values 0.0, 1.0, 2.0...

after: MIDI aftertouch. In MIDI mode, channel pressure and poly key pressure (aftertouch) are added to make this signal. In MPE mode, only channel pressure is used. Using poly key pressure, each note can have its own envelope played live, even with all notes on the same MIDI channel.

modcc: The MIDI continuous controller with the number selected in the KEY interface.

modcc+1: The MIDI continuous controller with the number selected in the KEY interface plus one.

modcc+2: The MIDI continuous controller with the number selected in the KEY interface plus two.

cc73, cc74: Continuous controllers 73, 74. From the Soundplane app these are how x and y are sent over MIDI. 74 is the standard per-note expression control in the MPE specification.

z: Per-note pressure from the Soundplane or any t3d touch messages.

dy: Change in y for each touch. This control is 0 at the start of each touch, then changes as the touch moves up or down. Calculated from y in the t3d messages.

x, y: The x and y positions for each touch. The behavior of these signals may be configurable through the app or instrument sending t3d data. For example, x and y may range over the entire playing surface, or over each note, be unipolar or bipolar.


In MIDI mode without MPE, all the touches will be on the same channel, so touches cannot send pitch bend or other controllers independently. In this case the most recently played touch is used to control the pitch or controller value of all held touches.

Ableton Live, unfortunately, has a simplified approach to MIDI in which all MIDI notes play on the same channel internally. As far as Aalto or other synths can see, all MIDI notes sent to them from Ableton Live are on channel 1. So it is currently impossible to implement MPE mode in Live. Soundplane players who want to use Live can choose between MIDI without MPE (no independent pitch or controllers, but recordable) or OSC (great individual control, but not recordable).

In addition, Ableton does not pay attention to the Poly Key Pressure (Poly Aftertouch) part of the MIDI specification. So in single-channel MIDI mode, there is no control possible over invididual notes.

Wed, Mar 08, 2017, 09:27

A lot of presets i had which were functional in the last release are no longer functional . these exploited the previous behaviour whilst rate was 0.00

This was pointed out here and fixed.

I also note that when changing between presets which both share a Rate of 1.0, the rate dial will momentarily jump up to 220 for a split second then revert to 1.0, it is interrupting audio

That's new to me, I'll investigate.

Wed, Mar 08, 2017, 09:26

One other comment, i'm curious, has anything changed with regards to the output of the sound engine in a manner which might affect the tone, something isn't quite right with my presets, i can't quite put my finger on it ..

It's possible that the sound has changed very subtly. My intention was not to change the sound, however many things have been rewritten. When I make changes to the audio engine I listen to a series of reference patches I know very well. If these sound as they should, then all is well.

If you have a patch that sounds different enough between versions as to constitute a bug, you are welcome to send it to me for listening.

Tue, Mar 07, 2017, 14:23

Thanks for the comments. I could not reproduce the issue with 0 giving any change or +12 not being an octave.

Are you sure you have your attenuverter set to 1.0? Try double-clicking it to restore the default.

Do you have glide on? If so, the output value will always be a linear combination of two adjoining sliders based on the current time value. So if you are doing testing like this you have to make sure glide is off, even when the rate is 0.

I tried all the quantize ranges, and I did find some oddness with |range|

Tue, Mar 07, 2017, 08:55

Out of all of these, Reaper is the one I have tested with and, I think, that the most people use. So that may be a plus. Not to say the others won't work and maybe provide some advantages.

Reaper does have a down side in that the graphical handling of plugins is not the smoothest. But that's improving and I've always found its audio engine to be top notch, it's an excellent value.

I would check the Live intro as well.

Traction has a sort of simplified approach to a DAW that you may find very usable.

On Audacity: I don't know why it would sound "thin." Basically any program capable of recording should be getting the same bits from your interface to the hard drive. I would look at your interface setup to see if there's some big incompatibility, or, failing that, use a spectrum analyzer plugin to try to quantify the difference.

Mon, Mar 06, 2017, 09:59

That's great to hear. New betas for Windows coming very soon, I think.

Mon, May 13, 2013, 13:45

Aalto T-shirts!

Just in time for summer, Aalto T-shirts are now in stock! Oft-requested and long-awaited, these shirts are the first physical artifacts besides the Soundplane to come out of the Labs. They start out soft, will wear in gracefully and are likely to give you super patching powers.

We asked our good friend David Chandler to tidy up his Aalto manual cover for a larger reproduction size, and printed it in a subtle aqua gradient on American Apparel’s Sustainable Edition organic cotton shirts in Galaxy Blue. Nerdy yet surfy!

We are selling these nice shirts for $20. Shipping is by US First Class Mail, for $4 within the USA and $16 internationally. PayPal will add these costs automatically when you enter your shipping adress.

Select a unisex size and click to buy:
SOLD OUT except for size small.

Mon, Mar 06, 2017, 09:58

I really want to. Need to find some reliable local help to do provisioning.

Fri, Mar 03, 2017, 12:25

I'm making progress here. To get some of these big speedups I moved the plugins onto my new madronalib framework sooner than I had planned to. (More on that soon.)

Unfortunately there was a big hurdle with this new and awesome code on the 32-bit Windows platform in particular. It's taken me some time to figure out a solution. I just compiled something that works on Win32, so I'm hopeful that I can get to these other reported issues and release soon.

Wed, Mar 01, 2017, 11:08

I think what the original poster is referring to may just be the oscillator drift. I can investigate more after this release.

Mon, May 13, 2013, 13:57

Hi Brendan,

Sorry, I don't do license transfers. I have a very unobtrusive demo version, and I advise people to try before they buy. Please see the License Terms section on the Aalto page for all the details.

[EDIT March 2017] NOTE: This conversation is from 2013! Currently license transfers are allowed for a small service fee. Please contact me for details.


Tue, Feb 28, 2017, 20:35

I'll send out a new Windows beta soon. Please stay tuned and give it a try.

Tue, Feb 28, 2017, 10:33

Thanks a lot! There is so much stuff rewritten for this update, we're bound to run into a few things. Will investigate.

Mon, Feb 27, 2017, 09:07

OK, thanks for the report. Checking audio input incl. meter response would be part of my normal testing checklist. However, it's possible for things to break in ways that manifest only randomly. I'll check this for the impending release.

Sat, Feb 25, 2017, 10:09

A setup with a single instance in a minimal DAW seems like a good solution for you. DAWs do not take too much CPU, generally. They add complexity but you can set this up once and forget about it.

Reaper is a good option and inexpensive.

A newcomer on the scene is called Gig Performer. They are trying to support just the use you envision. I have no experience with it myself yet.

To get a multitimbral use I would make two instances of Kaivo on different tracks and use each on a different MIDI channel.

Thu, Feb 16, 2017, 09:38

Your kind words are appreciated here! Stay tuned for an update very soon.

Tue, Feb 14, 2017, 07:13

Other people have asked for the ability to store Kaivo samples on a different disk. I'll be adding that feature when I can.

I do use Seib's VSTHost sometimes on Windows. For really quick launching I use the "Plugin Host" that comes with JUCE. You have to compile it yourself though.

Mon, Feb 13, 2017, 10:33

Welcome aboard and thanks for the good words.

The "mod cc#" dial controls the number of the cc message that comes out of the "mod", "+1", and "+2" outputs. So if you set the dial to "14", the three outputs send the values of CC messages 14, 15, and 16. This is in the manual on p.32–33. The explanation could probably be better.

The pitchbend control is added to pitch before coming out the pitch output of the KEY module. As you note, it can't be assigned to anything else. I have never seen a synth that's able to to that, so I never really thought of it! MIDI kind of sets us up for this because pitch bend is not a CC#, it's a separate kind of message.

I think Kaivo should let you import samples in demo mode. The readme file that comes with the installer has a quick rundown of how to make your own multichannel files if you want to do that. Otherwise you can just use the "import" feature in the granulator. If you are just adding your own files by hand, you have to move them into the Madrona Labs directory. There is a maximum length of 8 seconds for the sample files so if you just moved them in yourself, it may be choking on that.

Grain length is totally independent from sample files and is set up in the granulator engine by the "pitch" and "rate" and "overlap" dials.

I don't know what you mean by "can I use all samples."

Out of the two synthesizers I recommend getting started with Aalto, it's the main one a lot of people reach for every day, and you don' t need external samples to make great sounds. Kaivo is more specialized.

Sun, Feb 12, 2017, 10:30

Great news! This kernel bug was preventing isoch USB, is that right?

I'm excited to see your setup in action when you have time to document it. I would also like to put together a guide to making the raspberry Pi solution work and get it up on the web site.

This also fires me up to complete v.2 of the touch detector.

Are you using the Linux Soundplane driver that Per Eckerdal came up with? That was created "on the way" to getting a Windows driver working, but we never got all the way there. If you need any kind of assistance or encouragement with the Windows work, let me know!

MEC seems like really interesting work and I can't wait to check it out.

Sat, Feb 11, 2017, 12:22

Thanks for the detailed feedback. I'm getting back to the Soundplane software now.

The first thing I'll be working on is the new touch detector. Hopefully this will improve CPU usage a lot, as well as the edge effects you are noticing.

A lot of these other things were on my list too, and now they all are.

I would like to improve Kyma support, but it's a bit slow for me to get feedback. Maybe I could get a loaner machine from Symbolic? I'll ask them after I can get some of these more major things under way.

Thu, Feb 09, 2017, 07:49

Thanks for the update. I'll try the most recent Reaper.

The fixed size refers to the block size used when processing audio. you should be able to set this to a fixed value in Reaper's audio device preferences. I just checked it out and I don't see the "fixed" language, so sorry for the confusion. That is from FL Studio, I had it mixed up. In Reaper it looks like you want to click "request buffer size" and enter a value like 256 or 512.

Wed, Feb 08, 2017, 10:50

The next Soundplanes will be Model Bs. There hasn't been much movement on it because I've been so focused on software here. Well, I do have the table saw set up. :-) I'll be excited to show pics of prototypes, etc when I can!

Wed, Feb 08, 2017, 07:00

Working on it here. There's no one big thing to fix, so I'm fixing 100 little things. I'll post a new beta soon.

Mon, Feb 06, 2017, 08:47

Thanks for the additional info. These hints may help me find a fix. The different methods may send events at different times—one is sample-accurate, for example.

Mon, Feb 06, 2017, 08:45

I would like to add this feature. It's on the list.

Thu, Feb 02, 2017, 18:32

No way to import / combine multiple files at once. This would be cool, but would take me a while to accomplish. At the end of the readme : http://madronalabs.com/media/kaivo/_read_me_first.txt
there's a short guide on putting together multi-channel files with Audacity, which is what I used to make them.

Tue, Jan 31, 2017, 11:37

Thanks much for the info! I hope this helps you out, Wells.

Mon, Jan 30, 2017, 09:32

Hi Wells, I've never had the chance to try Push so I'm guessing a bit here.

At one point I moved the location for presets from ~/Library/Plug-Ins/Audio/Presets/Aalto to ~/Music/Madrona Labs/Aalto. It's possible Push / Live are looking for presets in this old location. You could try moving some there to check.

You could also try the VST instead of the AU.

Do you know if Live is trying to load presets in .aupreset format? That's a custom AU thing I moved away from.

I'd like to make it work with Push, it's a cool piece of hardware, so I will look into this.

Thu, Jan 26, 2017, 12:03

Thanks. Please let me know if you can find any more information, such as one patch that this always seems to happen with.

I would not call this a crash, but rather an audio freeze. Not that it's not bad! I think this is likely the same issue as posted here under "Kaivo stops making sound suddenly." I'm working hard to track it down. Thanks for your patience.