kristian's Recent Posts

Hi! I have a patch where I want to control each of Aalto's 4 voices.

The sequencer controls each voice's detune, by using a sawtooth wave, and a small range. I originally wanted to do this with "vox", but the detuning was too much, even with the smallest mod amount. Is there a way to recude the mod amount further?

"Vox" is sent to the panning control, but it's kind of tedious to set up. Currently, voice 1 and 4 are panned completely to the left and right, which was pretty simple to do. However, if I want to change the percenteages to, say, 30-15-15-30, I'd have to move the pan control to 30% left, and fine tune the mod amount in the dark (right-click and enter mod amount, or a numeric display would be handy).

The ideal would be to just leave the pan control at 0, and have the mod amount be unipolar, so voice 1 and 4 would always be the same distance apart.

I'm having a similar wish with the sequencer - being able to decide whether the destination maps its values to a range of 0..x or -x..x - I find myself wanting to spread things from the center point quite often.

I hope someone is able to shed some light on my questions. Thanks!

Here is my patch, for convenience:

{
"delay_drive": 0.500000,
"delay_drive_p": 0,
"delay_feedback": 0,
"delay_feedback_p": 0,
"delay_freq": 110,
"delay_freq_p": 1,
"delay_input": 0,
"delay_input_p": 0.500000,
"delay_output_dry": 1,
"delay_output_wet": 2,
"delay_peakfreq": 1000,
"delay_peakfreq_p": 1,
"delay_peakres": 0,
"delay_peakres_p": 3.520000,
"env1_attack": 0.001000,
"env1_attack_p": 0,
"env1_decay": 1,
"env1_decay_p": 0,
"env1_level": 1,
"env1_release": 0.120000,
"env1_release_p": 0,
"env1_sustain": 0.500000,
"env1_trig_select": 1,
"env1_xvel": 1,
"env2_attack": 0.001000,
"env2_attack_p": 0,
"env2_delay": 0,
"env2_delay_p": 0,
"env2_release": 0.010000,
"env2_repeat": 0.429688,
"env2_repeat_p": 1,
"env2_sustain": 0,
"env2_trig_select": 1,
"env2_xenv1": 1,
"env2_xvel": 0,
"filter_cutoff": 20000,
"filter_cutoff_p": 1,
"filter_mix": -1,
"filter_mix_p": 0.020000,
"filter_q": 0,
"filter_q_p": 0.020000,
"gate_decay": 1,
"gate_level": 0,
"gate_level_p": 1,
"gate_mode": 0,
"key_bend": 7,
"key_glide": 0.010000,
"key_mod": 1,
"key_scale": "12-equal",
"key_unison": 0,
"key_voices": 4,
"lfo_freq": 34.250000,
"lfo_freq_p": 0,
"lfo_level": 1,
"lfo_level_p": 0,
"lfo_noise": 0.870000,
"osc_carrier_out": 0.500000,
"osc_index": 0,
"osc_index_p": 0,
"osc_mod_out": 0,
"osc_noise": 0,
"osc_noise_p": 0,
"osc_offset": 0,
"osc_offset_p": 0,
"osc_pitch": 220,
"osc_pitch_exp_p": 1,
"osc_pitch_lin_p": 8,
"osc_ratio": 1,
"osc_ratio_p": 0,
"osc_timbre": 0,
"osc_timbre_p": 0,
"osc_waveshape": 0.900000,
"osc_waveshape_p": 0,
"output_input_gain": 1,
"output_pan": -1,
"output_pan_p": 0.660000,
"output_reverb": 0,
"output_reverb_p": 1,
"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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 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, 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, 0, 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]
},
"preset": "Aalto default",
"seq_glide": 0,
"seq_host": 0,
"seq_local": 1,
"seq_loop": 0,
"seq_offset": 0,
"seq_offset_p": 4,
"seq_pulse0": 0,
"seq_pulse1": 0,
"seq_pulse10": 0,
"seq_pulse11": 0,
"seq_pulse12": 0,
"seq_pulse13": 0,
"seq_pulse14": 0,
"seq_pulse15": 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_pulse_delay": 0,
"seq_pw": 50,
"seq_quantize": 0,
"seq_range": 10,
"seq_rate": 0.250000,
"seq_rate_p": 0,
"seq_ratio": 1,
"seq_steps": 1,
"seq_steps_p": 0,
"seq_trig": 0,
"seq_value0": 0,
"seq_value1": 0.066667,
"seq_value10": 0.666667,
"seq_value11": 0.733333,
"seq_value12": 0.800000,
"seq_value13": 0.866667,
"seq_value14": 0.933333,
"seq_value15": 1,
"seq_value2": 0.133333,
"seq_value3": 0.200000,
"seq_value4": 0.266667,
"seq_value5": 0.333333,
"seq_value6": 0.400000,
"seq_value7": 0.466667,
"seq_value8": 0.533333,
"seq_value9": 0.600000,
"seq_value_delay": 0,
"seq_wave": 0,
"maker_name": "Madrona Labs",
"app_name": "Aalto",
"app_version": 67073
}

No worries. The manual describes it well, I think. I was just curious if perhaps signals could be added somehow. I still haven't looked through all the presets or tweaked very much yet.

I can see how a bipolar envelope signal could get confusing, as the dial's original value wouldn't be very relevant. I do however think that the voice and sequencer signals would be a good fit for a uni/bi switch. The sequencer with its sine wave currently behaves like a unipolar LFO.

Come to think of it, my pan modulation can be managed very easily by simply adding a Utility effect in Ableton Live, and adjusting the stereo width.

Numerical dials would be very helpful. It would also be really cool to be able to modulate the mod amounts, although that could probably get really messy. :)

Hi! I just bought Aalto, and I really love it. Also, I'm very impressed with the beautifully written and designed manual!


// 1. Problem

I see a lot of tunings that I want to check out and compare, but the thought of re-opening the menu over and over isn't very appealing.

This is also true when I want to compare presets across different categories, or compare the first and last preset in a category.

// 2. Who's doing it right?

I quite like the way it's done in Native Instruments' Razor. You can click on an icon to make the menu stay open until you've found what you want, or you can de-activate it to have the menu close once you make a choice.

OP-X-II-Pro has two preset menus - one that closes when a preset is chosen, and another one that stays open and allows me to compare items until I click outside of it.

I quite like the look of Omnisphere 2's mini browser @ 9:30 https://vimeo.com/117503596 - the rest seems a bit overkill though.

Circle's oscillator menu stays open, and shows a lot of waveforms, which allows me to rapidly compare them, which is very enjoyable.

// 3. What could Aalto/Kaivo's implementation look like?

I imagine this could be done with one small on/off switch labeled "menus stay open" in the header.

This could all apply to the preset and tuning menus, and to the LFO2D/granulator/resonator/body menus as well, in Kaivo's case.

In "stay open" mode, the menus could be exited by either clicking outside of them, clicking a small "x" button, or by double-clicking a preset. Single-clicks load a preset, while double-click closes the menu.

In some cases, it would also be nice with a larger browser, like the Omnisphere 2 mini browser example.


I realise this might not be top priority. The current GUI is both aesthetically pleasing and easy to make sense of, so it's already doing its job very well. However, I personally really enjoy some extra attention to interaction design.

Thanks for your amazing work, Randy!

  • Kristian