hardware and software for electronic music 

randy's Recent Posts

Tue, Aug 22, 2017, 11:20

No technical reasons, I just have a long list of things to do. I'll probably add this to the Aalto 2 release and update the other plugins thereafter.

Thu, Aug 10, 2017, 13:09

Summer sale 2017

Dear music makers,

In appreciation for your support, we are having a summer sale this year. Use the code MRJACKPOTS on any of the product pages to get 25% off any Madrona Labs plugin. From now through August 20.

photo: @photoboothkt

Sun, Aug 20, 2017, 10:28

Much more likely to happen in Virta! I want Aalto's reverb to be a super-simple, one-knob device in the spirit of the Arp 2600.

Sun, Aug 20, 2017, 10:24

Whoops, I meant to expire it tomorrow—fixed!

Fri, Aug 18, 2017, 12:22

from Pancycle Music:
http://www.pancyclemusic.com/aalto-my-latest-software-synth-addiction/

{
"delay_input":0.670000,
"demo":0,
"licensor":"",
"seq_trig":0,
"key_voices":2,
"key_mod":1,
"key_bend":7,
"key_unison":1,
"key_glide":0.010000,
"seq_wave":0,
"seq_local":1,
"seq_host":0,
"seq_loop":1,
"seq_rate":0.444000,
"seq_ratio":1,
"seq_rate_p":0,
"seq_steps":16,
"seq_steps_p":0,
"seq_offset":0,
"seq_offset_p":0,
"seq_range":12,
"seq_quantize":0,
"seq_glide":0.770000,
"seq_pw":50,
"seq_value_delay":3.500000,
"seq_pulse_delay":0,
"seq_value0":0.500000,
"seq_value1":0.308658,
"seq_value2":0.146447,
"seq_value3":0.038060,
"seq_value4":4.996004e-16,
"seq_value5":0.038060,
"seq_value6":0.146447,
"seq_value7":0.308658,
"seq_value8":0.500000,
"seq_value9":0.691342,
"seq_value10":0.853553,
"seq_value11":0.961940,
"seq_value12":1,
"seq_value13":0.961940,
"seq_value14":0.853553,
"seq_value15":0.691342,
"seq_pulse0":0,
"seq_pulse1":0,
"seq_pulse2":0,
"seq_pulse3":0,
"seq_pulse4":0,
"seq_pulse5":0,
"seq_pulse6":0,
"seq_pulse7":0,
"seq_pulse8":0,
"seq_pulse9":0,
"seq_pulse10":0,
"seq_pulse11":0,
"seq_pulse12":0,
"seq_pulse13":0,
"seq_pulse14":0,
"seq_pulse15":0,
"lfo_freq":0.420000,
"lfo_noise":0,
"lfo_level":0.710000,
"lfo_level_p":0,
"lfo_freq_p":-2.400000,
"env1_attack":0.180000,
"env1_decay":1,
"env1_sustain":0.170000,
"env1_release":1.260000,
"env1_level":1,
"env1_xvel":1,
"env1_trig_select":1,
"env1_attack_p":-1,
"env1_decay_p":0,
"env1_release_p":0,
"env2_repeat":0.429688,
"env2_delay":0,
"env2_attack":0.190000,
"env2_sustain":0,
"env2_release":0.290000,
"env2_xvel":0,
"env2_trig_select":1,
"env2_xenv1":1,
"env2_delay_p":0,
"env2_attack_p":0,
"env2_repeat_p":1,
"osc_noise":0,
"osc_ratio":2,
"osc_offset":0.000003,
"osc_index":3.910000,
"osc_timbre":0,
"osc_pitch":110,
"osc_waveshape":0,
"osc_noise_p":0,
"osc_ratio_p":0,
"osc_offset_p":16,
"osc_index_p":-5,
"osc_timbre_p":0,
"osc_pitch_exp_p":1,
"osc_pitch_lin_p":4,
"osc_waveshape_p":0,
"osc_carrier_out":0.460000,
"osc_mod_out":0.460000,
"gate_level":0,
"gate_mode":1,
"gate_decay":1,
"gate_level_p":1,
"delay_peakfreq":1000,
"delay_drive":0.620000,
"delay_peakres":0,
"delay_feedback":0.340000,
"delay_freq":13.750000,
"delay_input_p":0.500000,
"delay_peakfreq_p":1,
"delay_drive_p":0,
"delay_peakres_p":0,
"delay_feedback_p":0,
"delay_freq_p":2.360000,
"delay_output_wet":1.520000,
"delay_output_dry":1,
"filter_cutoff":366,
"filter_q":0,
"filter_mix":-0.372491,
"filter_cutoff_p":-3.320000,
"filter_q_p":0,
"filter_mix_p":0,
"output_input_gain":1,
"output_reverb":0.200000,
"output_pan":0,
"output_reverb_p":0.200000,
"output_pan_p":0,
"patcher_matrix":{
"type":"signal",
"width":14,
"height":31,
"depth":1,
"data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
},
"key_scale":"12-equal",
"preset":"Pancycle/Keys/Saint Patrice",
"maker_name":"Madrona Labs",
"app_name":"Aalto",
"app_version":67586
}
Thu, Aug 17, 2017, 10:05

I just looked that up, interesting module. The closest thing I have made to a spectral freeze function is actually in Virta. Although it doesn't have a freeze feature now, I could add one pretty easily.

Kaivo would be a bit harder because there is nothing like a spectral processor in it. The resonators and body are all physics-based and it's hard to imagine how to freeze them in a useful way.

Thu, Aug 17, 2017, 09:59

Thanks for the feedback. This spring I sent out a Kaivo update that added about a 25% performance improvement. There will be more to come.

Thu, Aug 17, 2017, 09:55

These ROLI docs are great, I had not seen them. Thanks for sharing.

Thu, Aug 17, 2017, 09:54

Thanks for the info.

Thu, Aug 17, 2017, 09:53

No worries!

Tue, Aug 15, 2017, 11:51

Thanks for the suggestion. Aalto 2 won't be very different from the current version. The patches will be compatible and I'll figure out how to add any new features without shaking things up too much. Don's designs will remain a constant source of inspiration, so you might see some things you recognize as "Easel-like" in upcoming plugins.

Mon, Aug 14, 2017, 08:42

Yes, there will be a paid upgrade to version 2.

Sun, Aug 13, 2017, 16:48

It is limited to 1.0 currently. I believe I was not doing this before. It seemed to make sense to limit it to the [0. - 1.] range. But if this is not enough practically for some desirable patches--- are you saying you have the attenuverter turned to maximum modulation?---then I could take away the limiting or make it an option.

Sun, Aug 13, 2017, 16:41

according to all this...is Aalto (1) now abandonware? ;)

Aalto 2 would be the first major version update of the same software instrument. This is the opposite of abandoning it. Don't worry.

Thu, Aug 10, 2017, 09:14

Reading with great interest. There's definitely a place for well-designed, single-purpose instruments, as well as modulars. Aalto 2 would really be just a major version, and not in any way a new instrument. I'll try not to mess it up. :wink:

Wed, Mar 30, 2016, 12:54

Using Virta in Bitwig Studio

Thanks to Thomas Helzle for this very detailed blog post on how to use Virta in Bitwig Studio. It's not difficult to begin with, and this explanation with nice illustrations and clear directions makes it that much simpler.

Fri, Dec 09, 2016, 19:10

Beta all the things!

After much wailing and gnashing of teeth, all the Madrona Labs plugins have been updated. Almost immediately after announcing all this work I unexpectedly had to go into panic mode finding a new location for the Labs. Now the new digs are found, the move is complete and we are in great shape, but it sure slowed things down a lot. So if you have been waiting on one of these fixes this Fall, let me thank you sincerely for your patience and support.

I'm putting up these beta installers for both Mac and Windows now, for any adventurers who want to try them. They incorporate the new licensing system, which is more like what you're probably used to from other plugin makers: the demo and release are the same exact plugin, and you turn the one into the other by entering a key. I will update the website to send out keys early next week. So until then, these betas are demo-mode only, with the lack of saving and the whooshing noise we al know and love.

The biggest improvements to all the plugins are :

  • new registration system
  • new software PLL host sync
  • UTF-8 compatibility for patch and registration names
  • fixed an issue where the protocol type (MIDI, MPE, OSC) was not loading if the plugin editor did not exist
  • fixed an issue where folder or patch names starting in numbers might not appear
  • code signed Mac OS installer for Gatekeeper compatibility
  • code signed Windows installer for security and good feels
  • fixed a drawing problem with multiple plugin windows
  • fixed a problem where the sequencer would restart when its parameters were changed
  • fixed a problem where sequencer voices would stop after a program change

Virta has some additional fixes.

Please give these puppies a try, if you have time, and if you were having issues before let me know if things improve.

Windows installers:
http://madronalabs.com/media/aalto/AaltoInstaller1.8.0b4.exe.zip
http://madronalabs.com/media/kaivo/KaivoInstaller1.3.0b4.exe.zip
http://madronalabs.com/media/virta/VirtaInstaller1.3.0b4.exe.zip

Mac installers:
http://madronalabs.com/media/aalto/Aalto1.8.0b4.pkg
http://madronalabs.com/media/kaivo/Kaivo1.3.0b4.pkg
http://madronalabs.com/media/virta/Virta1.3.0b4.pkg

Fri, Jul 14, 2017, 17:02

Soundplane 1.5 beta available

For the last few months I've been working on a brand new way of extracting touches from the Soundplane pressure data. I'm very happy to send out the first public demo of that work today, as Soundplane 1.5.0b1.

The new touch tracker algorithm is a fundamentally new approach, and fixes small but annoying inconsistencies that players had to work around with the old one. Some of these showed up as stuck notes, or lingering phantom notes that would follow a touch.

I've been playing my Soundplane a lot while working on this. Now, when the sounds aren't right, I'm finding more often it's a problem with where my fingers are and not the software. So I'm very happy to switch my focus a bit more from algorithm development to practising!

Soft touches are no longer subject to a time-varying rejection filter, and should feel much more stable and less spongy. Positions of touches should be more accurate and consistent. Adjacent touches should maintain their positions better over a range of pressure.

Generally speaking, the new algorithm uses spatial filtering in a lot of places where the old one used temporal filtering. So latency should be much better, and in general it should reflect whatever your fingers are doing right now, which is kinds the point. Read on for details.

Version 1.5 changes

  • new touch tracker algorithm
  • attempted fix for Kyma connection

Installation

I'm sending out this version and any other upcoming betas simply as a compressed file containing the application. You can move it to wherever you currently keep your Soundplane application and run the new one alongside the current one. All data files have the same format, so you can use old zone presets with the new version.

On installing, I recommend that you go to the Expert page of the application and choose "restore defaults." This will set the default parameters for the new tracker and pick carriers.

If you have a carefully made calibration for the old tracker, you may want to back that up. I believe that it will be preserved if you switch to the new version and back, but better safe than sorry. The calibration file is in Library/Application Suppport/Madrona Labs/Soundplane/SoundplaneAppState.txt.

Getting started

This new tracker runs on a new, more robust principle and so a calibration procedure is no longer needed at all. In the future, I may add some form of positional fine tuning to allow for differences between instruments, but for now I think this should perform well without any calibration, and we'll have a more consistent baseline so I can get feedback on how it's working for the beta.

A couple of levels might need to be adjusted, as follows. Run the app and go to the "Touches" page, and pick the "xy" view mode from the view mode menu. If you raise the view scale dial to around 10, you can probably see some gray flickering. This is the sensor background noise. If you touch the surface now, you will see some green pixels, and probably a touch. If you see green pixels when you are not touching the surface, the "lo thresh" dial needs adjustment. To do this, go to the Expert page.

Back on the Touches page the "thresh" dial functions basically as before. The default here is 0.01. If you make this lower, lighter pressure will create touches, but touches will not be as consistent. Please use the default value for now when reporting issues.

Beta testing

Let me know if the new tracker seems like an improvement. If there are some cases where it isn't, the most effective communication to me would be a short written statement about what doesn't work well. I may be seeing the issue too, and already aware of it. After that, screen shots and movies are probably the best way to communicate about issues with tracking.

If you have a Kyma, please get in touch and let me know if this fix solves the connection issue with 1.4. If it does not, I will be sorry, but not too surprised, because I don't have a Kyma for testing. Now that the new tracker is done, and we are in the testing phase for this release, I can work frequently with you to find a fix.

New tracker notes

The new tracker runs in multiple phases, which you can see visualizations of using the various view modes on the Touches page. In short, these are:

  • raw data: as before, raw Soundplane data
  • calibrated: data after calibration and spatial smoothing
  • pings: touch candidates obtained by curvature method
  • pings horiz: horizontal pings only with pressure graphs
  • pings vert: vertical pings only with pressure graphs
  • key states: where a touch may be over each key
  • raw touches: touch candidates derived from key states
  • touches: filtered and matched touches
  • xy: finished touches with position histories, also sensor data

Sustaining touches on adjacent keys should now be possible, with careful playing, as long as the touches are more than a key width apart. In other words,

While single touches can be played very softly, groups of touches may take more pressure.

Touches on the bottom row suffer from positional inaccuracy because the palm of the hand is often close by providing a sink for electrical charge. This is a Soundplane hardware issue, not a tracker thing as such. To see an example, try pushing the lower row keys with a nonconductive pen or pencil instead of a finger. You may see that the positions go more easily to their limits. I have found keeping the bulk of my hand away from the surface, by curling the finger underneath and playing with my nail, to be a useful technique.

Touches never go all the way to the edge of the outer keys. If you think about it, you would have to be poking into the corner with something pointy-shaped in order for the center of a touch to be truly on the edge of the surface. The Soundplane is designed for fingers, which all have some thickness.

Next steps

If you look on the Soundplane issue tracker on Github, you can see the problems I know about or improvements I would like to make. If you have a problem with the software or a feature suggestion that's not on this list, please let me know.

The current state of the software archive is a bit messy, and it's not too clear what versions of libraries to grab to compile your own version. I'll be cleaning things up as I work on the 1.5 release. Meanwhile feel free let me know if you have any questions.

I also look forward to finally updating the manual, now that the software is settling down. I'm having a lot of fun playing now, and I plan to do some more video demonstrations soon.

Finally, all this work sets the stage for the soundplane-to-CV module, and the next model of the Soundplane itself. Stay tuned for developments.

Tue, Aug 08, 2017, 08:45

I have only been building for 64-bit. Adding 32-bit doubles the size of the app and I wouldn't have thought anyone wanted it. If this is a need you will be having regularly and not just a lark, I can look at adding a 32-bit version.

Sat, Jun 23, 2012, 19:49

STICKY: Soundplane Client for Mac

Soundplane application 1.4 release notes

September 2, 2015

To install this version: move the "Soundplane" application to your Applications folder, then move the directory "ZonePresets" to ~/Music/Madrona Labs/Soundplane.

When you launch the Soundplane application, the menu at the top of the "Zones" page should contain three presets: chromatic, rows in fourths and rows in octaves, followed by a list of all the JSON files in the ZonePresets folder. If the JSON files do not appear, the ZonePresets directory is probably not in the right place.

The format of the zone .json files is human-readable and relatively self-explaining. Take a look to see how to make your own zone maps.

The Soundplane Max/MSP examples require the CNMAT Max externals to run. These can be found at http://cnmat.berkeley.edu/downloads .

The Soundplane application is open-source, available under a permissive license. For source code and more technical information see http://github.com/madronalabs.

changes:

1.4:

  • fixed a problem with MIDI output preventing slide between rows
  • tweaked pre-touch filtering for lower noise
  • (dev) new cmake-based build system
  • (dev) experimental Linux build
  • (dev) added HelloSoundplane command line app for low-level testing

1.3:

  • MPE MIDI support. Requires Aalto 1.7 / Kaivo 1.2.
  • Implemented note splits to multiple ports over OSC.
  • Improved stability and sensitivity of MIDI velocity
  • changed "z max" control to more intuitive "z scale."
  • fix crash with uninitialized driver on shutdown
  • allow 1-500Hz MIDI data rate
  • fix bug where pressure wasn't getting set w/o a MIDI connection
  • send quantized pitch bend on MIDI note off
  • fix touch tracker issues including zone-switch bug
  • fix to allow MIDI note 0
  • fix for double note off problem
  • fixes for MIDI glissando

1.2.5:

  • [1.2.5.1] Fixed a crash on startup if no preferences folder was present.
  • Kyma listener off by default to fix collisions on port 3124. Use 'kyma' toggle on Expert page to turn on.
  • fixed automatic connection to selected OSC service on startup.
  • restored some values from 1.1.2 to improve touch tracking.
  • add automatic saving of window dimensions. This is saved in /Application Support/SoundplaneViewState.txt.
  • fixed a problem resolving OSC services
  • fixed wrong MIDI note offsets in default Zone setups

1.2.4:

  • rendering fixes for Retina display
  • make touches easier to get into top and bottom rows
  • code signing application
  • turned Kyma polling over MIDI OFF by default
  • fixed some state issues on startup that required reselecting zone to refresh
  • clamp zone outputs to [0, 1] as documented
  • fix touch rotate bug
  • fix OSC browser
  • made normalizing easier and mre accurate
  • sending out x, y, and z from zones via MIDI.

1.1.2:

  • more complete fix to the note-off problem
  • restored the note lock feature for new zones.
  • fixed an odd font-related bug

1.1:

  • PLEASE NOTE: moved support files to ~/Music/Madrona Labs.
  • fixed a problem where the wrong note value was sent on note-off
  • fixed a potential crash sending MIDI if a MIDI device was not set
  • made benign errors less alarming

3 Mb ZIP

Tue, Aug 08, 2017, 08:40

Looks like I have been building for 10.9 and up. I'll see what I can do to support 10.8.

Fri, Aug 04, 2017, 10:04

This is fixed, I'm working on the scale issue now and will send out an update shortly.

Fri, Aug 04, 2017, 10:02

Did you try the beta 1? It should still be linked above. Another person had the same issue with the beta 2 but not #1.

Thu, Aug 03, 2017, 18:08

Hi @walker I'm sorry I missed your post.

I actually found this thread through a search just now because I'm working on this issue. so I hope to have a fix for you very soon.

There's not yet a global transpose. It would be useful, I realize!

Thu, Aug 03, 2017, 08:47

In the release phase the granulator and resonator of the voice still need to be working to make sound, just as hard as in any phase. If another voice tries to use the resonator at a different pitch, you will hear this stealing.

The body is a bit different because it is shared by all voices. It is very much like the setup you are talking about with a reverberation plug-in.

Thu, Aug 03, 2017, 08:31

Hi Joseph, I don't test on XP anymore, but I haven't heard of any changes that would break it so I won't be surprised if it still works. Make sure to save your old installer or plugin and try the demo.

Wed, Aug 02, 2017, 10:03

I'm still interested in doing this. Now that AU version3 is supported it makes more sense.

Wed, Aug 02, 2017, 10:02

Thanks for the thoughts, all.

Aalto has been around for quite a while, and a lot of people have patches they are attached to. I have a lot of additions in mind, and I think all of them can be accomplished while maintaining good compatibility with previous versions.

I think if a Kaivo 2 were to offer improved smoothness across a larger range for certain sounds, then compatibility can come second. This thread is supposedly about Aalto so I'll probably write more about that elsewhere.

Wed, Aug 02, 2017, 09:05

It sounds to me like having only 8 voices is the problem here. At some point a voice must be stolen for a new note to sound, and with a long sustain there's no way to do this without hearing it.

At some point, maybe when Kaivo gains multicore support, then it will probably make sense to allow more voices.

Thanks for the feedback.

Wed, Aug 02, 2017, 08:58

OK, I'll look into this. To recreate the problem I need to lean more.

What version of Reason are you using when you get the problem?
What OS and version?
What input do you send to the plugin? It could depend on pitch.
Finally, if you are able to try the same patch in a different host on your system, please do and let me know if you can reproduce the same issues.