randy's Recent Posts

I could add some at the end if it were needed. Why do you ask?

The new Aalto installer is not code signed to pass Gatekeeper on Lion and Mountain Lion. To install your Aalto download on these systems, please visit Apple’s page here [support.apple.com] and follow the instructions under “How to open an app from a unidentified developer and exempt it from Gatekeeper.” That will get you up and running. For the whole story, read on.

If you bought a licensed copy of Aalto, you have experienced one aspect of it I’m particularly happy with, its watermarking system. Making this software is my livelihood, so I need people to support my work by buying it instead of just using a copy downloaded from somewhere. This is a problem faced by all developers, big and small, and typically, addressed with some kind of copy protection.


I'm not happy with the idea of copy protection for my software because I think copy protected software is broken software. You should be able to move and copy any data on your computer without worrying if it will be usable later, programs and media files included. This is hard enough to accomplish without software publishers deliberately making it harder.


Hardware dongles are probably the worst example of making things harder for the user. I assume the reader is familiar with iLok and the like, and has possibly experienced the nausea at the gig on realizing the dongle is at home in the desk drawer. Thankfully, dongles are on the way out. Any company that uses them is willing to make your life more than a little worse in return for a little more sales, and should be avoided.


A kinder solution is the software challenge/response system. These come in many different forms, and can be very bad, or only a little annoying, depending on implementation. The ones that are just a little annoying will ask you to upload some information to identify your machine, then give you a code that authorizes you to run the software on that machine. Sounds simple, but this can go wrong in quite a few ways:

&#x2022 breaking the software when seemingly unrelated hardware configuration changes

&#x2022 interfering with the operation of debuggers (I'm looking at you, PACE)

&#x2022 not allowing copy/paste of the response code, resulting in manual errors


But these are all minor problems. The overriding problem is that from the user’s perspective such a system has no reason to exist in the first place, and can only make life worse, unless you buy the argument that the company making the software could simply not pay the bills without it in place.


With the release of Aalto, I implemented a watermarking system that works transparently for the user. If you have bought a license to use Aalto, you can log in to the website, and click a link at any time to download the latest version. When you click the link, the server makes a personalized version of the installer with your name and serial number encoded into it. Your registration is inserted into the executable plugin code itself, so when you copy the plugin to use on another computer, it will just work---there's no key file to hunt down and copy, or installation process to do over. I think this was a good solution to the problem of how to encourage buying the software, but without creating any hassles for the user.


Enter Gatekeeper. Gatekeeper is a new feature in Mountain Lion and OS X Lion v10.7.5 that is intended to keep malicious software from running on your computer. It allows us developers to sign our apps, using a certificate that can be traced back to Apple verifying the source of the actual bits being downloaded, and that said bits have not changed since being registered with Apple, a process called code signing.


Code signing, by design, obviously breaks the watermarking process I was so proud of implementing. The watermark is a change to the installer binary, the very thing Gatekeeper regards as malicious. You might think, what if the code signing had some feature that allowed for a watermark, but rejected other changes? Unfortunately this isn't possible for Gatekeeper to do while fulfilling its mission. There's no way to insure that the changed bits aren't going to be executed by the program, and any change in an executable file could be enough to turn a program malicious.


I have no problem with Apple’s strategy... so far. Malicious software is a huge problem for many users, and overall this will make life better for people. Expert users who want more control and know what they are doing can turn Gatekeeper off. If Apple ever decides to make that impossible, it would be a huge blunder in my opinion, but that doesn't mean it won’t happen. So I should have some plan for delivering my software on Mac OS X if it does.


Is there a way I can both watermark and code sign my products? Yes, in theory. It would be possible to do the code signing process on the server, on each watermarked installer before each download. However, porting Apple's tools to my Linux server would be a lot of work I don't have the resources for, work that would need to be redone every time Apple changed any small aspect of their code signing process. I would love to hear about someone who’s currently doing this, because I'd like to have the best of both worlds. But it’s nothing I can take on myself.


The next best thing I can come up with is to move to a key file system. I will try to think of a way to use the website to make this as transparent as possible. People are used to having registration files, so this won’t be a big problem. It will be kind of sad though because, for a while, I had something way more awesome.

Hi Randy - I've been having automation issues with 1.3

Well this is covered above-- I had to change the parameter order which I realize is a pain for some people. It will break old files. If it's not working with new automation you're trying to make, maybe your host is caching the old parameters somehow.

I will see what I can do.

Hi Klinke.

Thanks for your very reasonable note, and sorry for the trouble. Unfortunately there's no good way to add parameters to a plugin that won't break previous versions. Hosts could save a parameter name, but instead, they all (so far as I know) save an absolute index.

If I wanted mappings not to break, my only choice was not good. I would have been forced to add some dummy parameters in place of ones I removed, and add the new parameters at the end, where they would not be found by users in the right order in menus, etc. So, I had to balance out an hour of pain now in mapping against an annoyance every single time one maps a parameter and confusion for new users in the future.

Anyhow, you may not care about such details but in any case thanks for understanding and I promise not to move Aalto's parameters again.




The 1.3 release of Aalto, the patchable synthesizer from Madrona Labs, is now available. With its innovative UI, distinctive sounds, and unique personality, Aalto is designed to help you make expressive new sounds with ease.


Veteran producers, modular fanatics, and neophytes alike have been praising Aalto for its sound quality and usability since its release. Now, in response to a year of user feedback and extensive testing, Aalto 1.3 has many new features and a few important bug fixes:

  • redesigned, rewritten, vector-based, smoothly resizeable UI
  • DSP optimizations
  • Open Sound Control input for Soundplane / t3d format controllers
  • fixed key stealing in Ableton Live
  • fixed Fxpansion RTAS wrapper compatibility
  • improved dial / mouse wheel ballistics
  • fixed Logic noise burst bug of doom
  • sync by ratios to host sequencer
  • added MIDI program change automation
  • store window location / num / anim prefs with saved data, not patch
  • fix startup / shutdown issues affecting Max/MSP, Reaper
  • KEY: added two MIDI modulation outputs
  • KEY: rearranged knobs for Soundplane/t3d switch
  • SEQ: added random sequence button
  • SEQ: added steps signal input
  • SEQ: allow fine delay time changes in steps of 0.1
  • ENV: increased attack, decay ranges
  • ENV2: added delay, attack signal inputs
  • LFO: add level signal input
  • OSCILLATOR: fix linear pitch input range
  • patcher: fixed sticky signal displays
  • patcher: display bipolar signals as absolute

    Aalto 1.3 is a free upgrade for licensed Aalto owners. If you already own a copy of Aalto, simply log in to your Madrona Labs account and click "My Downloads" to see the new links.

    An Aalto license is $99 US and includes all future 1.x upgrades as well as Mac and Windows versions.

I investigated this and thought a lot about it over the weekend. Conclusion: it can't be done, not without making the parameter menus in various DAWs look really ugly going forward. I would have to have some dummy parameters in there and some out-of-order parameters too. it would be a nightmare.

So, I'll be sure to make the 1.2.6 version available again for anyone that upgraded and lost automation.

thanks a lot tm.

Control over the window size is actually up to the host, so proper software on the host side is needed to get this right. Some hosts are more cooperative than others so there's nothing I can do. Still it's very good to have this info!

Resizing the GUI is something not many plugins do, yet. If you want to spread awareness by contacting the makers of the hosts that aren't getting this right, I'm all for it.

I will fix the patch naming glitch for the 1.3.1 release.

This was an oversight. I'm going to replace it ASAP.

Please explain better, what it does?

The mod output from the KEY module sends the MIDI continuous control (CC) selected by the "mod cc#" dial. The +1 and +2 outputs send the next two CCs. So if "mod cc#" is set to 1, mod, +1 and +2 send out signals from MIDI controls 1, 2 and 3.

That's it. The built-in sequencer is not affected by the scale and has never been. The scale just affectes incoming MIDI notes.

I know, it would be good if the scale affected the sequencer as well but it's a bit tricky.

Where can I get the aalto 1.26 version, would need it since I already installed the new update and I have a few tracks with automation.....

Give me the weekend here to look at rearranging the parameters. If it has to be the way it is, I'll make the 1.2.6 version available again for download.

I have Live 8.2.1 and it crashed 2/2 time when use the new update.

Strange... What OS? What did you do when it crashed?

Maybe just try reinstalling.

If it keeps up I will get you a version with some debugging code to try. Thanks.

A lot of the Western tunings are not obviously different from 12-equal. Try picking something really different like "balafon."

Works for me. Host / OS?

Is this true OSC or a conversion to MIDI?

Max sends parameter changes to the plugin through the AU / VST interface, so there's no MIDI involved.

Is the Aalto different when it kicks into t3d mode ( mapping x,y,z from gui etc. ) Can i send along any DeviceId. The Lemur tries to update around 60Hz, is this to slow.
Maybe its a waste of time without proper expressive instrument, but i am just a bit curious.

Yes, it displays a notice that you are in t3d mode, and sends out x, y, data etc.

No, I would love to see this work with a Lemur--I'm too slammed to do anything about it now (and don't have an iPad) but will happily support this work with answers etc.

hi randy thankyou for this FREE update.
i have a small prob with mouse going on the waveguide delay. it changes very, very quick. is this normal

If you want to fine adjust the waveguide (or any control), you can hold shift, then drag. Or, you can click to set it where you want.

I am having trouble with the scaling. When I drag from the lower right corner, the UI scales up, but the window does not. I am left with the same size window - but a cropped UI...
ableton live 8 / osx 10.5.8

Strange to hear, because I also use Live 8 here and I have never seen this problem. I would try upgrading to Live 8.2.2 if you don't have that version.

A bit offtopic, but as a software developer I was wondering how the new vector-based UI was implemented, resp. which GUI-library was used?

Aalto is written for Mac OS and Windows using JUCE. JUCE provides the low level drawing and interaction code on top of which I implement my own GUI components.

Not yet, although I might add OSC parameter automation to the next minor update.

What the t3d stuff is, is a way to get the high speed, high res touch data from Soundplane to Aalto. So if you wanted to, you could program some other 3d touch controller to send out notes to Aalto using this method.

T3d is designed to pass high res multitouch data, so it's easier to work with than MIDI for Soundplane-like situations where each note is articulated individually.

But yeah, I made the format open so people can play Aalto using other controllers one of these days, and when I get time I'll contribute to that work.

I have to say, it's not trivial to do, because the t3d format not really a typical OSC device format---it's designed to send touch data as fast as possible and recover gracefully from dropouts. Basically descended from TUIO2 if that's any help.

You can just install over the previous version.

Good idea.

I'll check out these soundfiles soon, thanks for taking the time. The sound is not any different on purpose.

CPU load might be due to drawing---for a better comparison of the audio you could test with the window closed in each case.

All parameters change in the smallest visible amount when the shift key is held down (fine adjust.) So, I think your mousewheel is sending multiple "ticks" at once. Maybe there is a way for you to adjust it in your system settings.

I have never tried Bidule.

I think, a toggle converts a float parameter into an integer 0/1 by dropping the non-integer part. So if you used the range 0.0-1.0 you would still always be less than 1. Why don't you try 0-2?

It should be possible but some code might have to be written to extend those apps. Or a new app written. I don't really have time to do it myself but I would love to see someone take this project on.

I don't have any idea why it would have to break in. Please keep me posted.

I can tone the gradient down a bit for you gradient haters.

FYI the original "flat" version has a gradient on it too. I just made it more obvious.

The dial buttons and toggle switch backgrounds are closer to the overall background color now because some people used to white backgrounds were confusing off (dark square on a light blue background) with on (white or other color on light blue background). So the "on" state now has lots more contrast away from the background than the off state, which is better.