ForumsSoftware ← Aalto 1.8.2 - parts of the synth get stuck?

Hi,

I've noticed what seems like a new bug in one of the recent Aalto releases. Sorry in advance that I don't have clear reproduction steps.

When I leave the transport running and flip through presets using the left/right buttons, occasionally parts of Aalto will get stuck. For example, I'll select a new preset and then the LFO "freq" oscilloknob will not be tracking the selected position, and the LFO output LED will stop changing, as will the LFO value itself. The rest of the synth will keep running. It's easy to miss unless a patch doesn't sound like it's supposed to.

I'm not sure if just one knob is affected or if it's always an entire section. I also have no idea if flipping through presets is really what causes the problem, but I have never observed a free-running patch just get wedged by itself.

Some peculiarities of my setup: 96 KHz sampling rate, and often Aalto's sequencer is running and locked to the host transport at some ratio, with all 4 voices active and "unison" turned on. But there is no one patch which seems to cause any problems.

Aalto 1.8.2
Ableton Live 9.7.1
Windows 10 64-bit

Hmmm. Big Hmmm. Thanks for the detailed info, this one is new to me.

When the dials get stuck, can you hear that the signals they control within Aalto get stuck as well? I think you are saying that's the case, but that's probably the most important clue for me to start thinking about.

Meanwhile I'll try to set my Windows 10 box up to run at 96k by default, and see if I ever run into this.

Also, if you can keep a list of the specific parts that get stuck and let me know, that would be helpful.

So in the LFO example, it seems like the LFO just stopped updating, i.e., not just stuck oscillating at some frequency, but not oscillating at all. If memory serves me right, it would have been stuck at some constant value and this would be consistent with what you hear.

I'll post any more occurrences here with details, and I'll try to distinguish more clearly between, e.g., the LFO frequency dial behavior, the LFO frequency, what the LFO is doing, and the effect on anything modulated by the LFO.

I can't reproduce this just by banging on the UI a lot more than I usually would, or by upping the sample rate further and causing buffer underruns.

I also saw one case where it seems like the "OUTPUT" section froze - the oscilloscope display stopped updating and there was actually no sound output at all. I don't know if that is an instance of what I'm describing or something else.

Please keep me posted. It's hard to imagine what the cause might be right now, because the LFO is such a simple and bullet-proof object.

What kind of CPU are you using?

It's an Intel Core i7-4710HQ. This is a weird one. It might happen once every few hours. I'm wondering if it's just this PC. It does not seem to be related to the audio driver (ASIO4ALL or DirectX in my case). I can attempt to generate a process memory dump if that'd help.

OK! It just happened again. And I will paste the preset which seems to cause the problem, but not completely reproducibly

(1) Opened up Ableton Live to the default Ableton blank live set
(2) Created an Aalto instance on track 1
(3) Selected a preset from the menu
(4) Observe that the plugin seems to operate normally briefly, and then the LFO and OSC timbre (which is modulated by the LFO) get stuck.

Here is what is happening:

  • LFO is wired up to modulate OSC timbre
  • LFO noise, level, and freq dials can be changed and both the shaded portion and oscilloscope line respond; if I add a modulator to the LFO noise/level, the dial oscilloscopes show the modulation
  • LFO output LED is stuck "off" or close to it
  • OSC timbre (modulated by LFO) is stuck, too, but in a slightly different way: the shaded portion of the timbre dial follows the selected value, but the oscilloscope line does not track the shaded portion.
  • The OSC is running, but the timbre is stuck visibly and audibly at 0
  • OSC noise, offset, ratio, mod index, shape, and pitch are responsive (visually and audibly), as is every other dial on the lower half
  • ENV 1 and ENV 2 appear to be working fine as modulators
  • Sequencer is free-running and also appears to be working normally
  • Disconnecting the LFO from the OSC timbre causes the timbre to get unstuck (visibly and audibly); now the timbre is responsive to other modulators if I wire them up
  • Connecting the LFO to the OSC shape immediately causes the entire synth to go completely silent; the shape dial now behaves the same as the timbre dial did with LFO connected (shaded portion responsive, oscilloscope line not responsive).
  • Waveguide/delay and filter sections are visibly responsive and the dials show the effects of modulation by one of the envelopes as expected
  • In the output section, the reverb and pan dials appear to be responsive to manual change and envelope modulation, but the main oscilloscope display is frozen
  • There appears to be no way to get Aalto to start making sound again, short of just creating a new Aalto instance
  • If I drag the LFO output around the various modulation targets, each one gets stuck and unstuck as I pass the cable over it

In the Ableton instance that I have open now, I can reproduce the LFO/timbre stuckness:

  • transport is running or not running at 96 bpm
  • create a new MIDI track and solo it
  • plop down another Aalto in track 2
  • paste the preset below from the clipboard
  • observe the timbre start to increase, but then get stuck at the maximum value

Now if I close Ableton, reopen a new instance, and paste in the preset on a new Aalto in track 1, the issue may or may not be reproduced. It worked fine a couple of times and got stuck in other cases. When it gets stuck, changing the timbre attenuverter seems to cause the timbre to flip/flop between 0 and the max setting.

If it's not Live, I wonder if this is like a floating point problem, like a denormal or something? Anyways, hope this helps.

{
"delay_input": 0.590000,
"demo": 0,
"licensor": "",
"seq_trig": 1,
"key_voices": 4,
"key_mod": 1,
"key_bend": 0,
"key_unison": 1,
"key_glide": 0,
"seq_wave": 0,
"seq_local": 1,
"seq_host": 1,
"seq_loop": 1,
"seq_rate": 0.372000,
"seq_ratio": 1,
"seq_rate_p": -0.320000,
"seq_steps": 16,
"seq_steps_p": 0,
"seq_offset": 0,
"seq_offset_p": 3,
"seq_range": 29,
"seq_quantize": 1,
"seq_glide": 0,
"seq_pw": 45.026634,
"seq_value_delay": 0,
"seq_pulse_delay": 0,
"seq_value0": 0,
"seq_value1": 0.520548,
"seq_value2": 0,
"seq_value3": 0,
"seq_value4": 0,
"seq_value5": 0.150685,
"seq_value6": 0,
"seq_value7": 0,
"seq_value8": 0,
"seq_value9": 0.191781,
"seq_value10": 0.191781,
"seq_value11": 0,
"seq_value12": 0,
"seq_value13": 0,
"seq_value14": 0,
"seq_value15": 0.315068,
"seq_pulse0": 0,
"seq_pulse1": 1,
"seq_pulse2": 0,
"seq_pulse3": 1,
"seq_pulse4": 0,
"seq_pulse5": 1,
"seq_pulse6": 0,
"seq_pulse7": 1,
"seq_pulse8": 0,
"seq_pulse9": 1,
"seq_pulse10": 1,
"seq_pulse11": 0,
"seq_pulse12": 0,
"seq_pulse13": 0,
"seq_pulse14": 0,
"seq_pulse15": 1,
"lfo_freq": 0.048726,
"lfo_noise": 0.433754,
"lfo_level": 0.864200,
"lfo_level_p": 0,
"lfo_freq_p": 0,
"env1_attack": 0.489530,
"env1_decay": 0.259383,
"env1_sustain": 1,
"env1_release": 0.577505,
"env1_level": 0.703105,
"env1_xvel": 1,
"env1_trig_select": 2,
"env1_attack_p": 0,
"env1_decay_p": 0,
"env1_release_p": 0,
"env2_repeat": 0,
"env2_delay": 0,
"env2_attack": 0.001000,
"env2_sustain": 0,
"env2_release": 0.015269,
"env2_xvel": 0,
"env2_trig_select": 2,
"env2_xenv1": 1,
"env2_delay_p": 0,
"env2_attack_p": 0,
"env2_repeat_p": 1,
"osc_noise": 0,
"osc_ratio": 3.753382,
"osc_offset": -32.666718,
"osc_index": 0.388662,
"osc_timbre": 0.170178,
"osc_pitch": 110,
"osc_waveshape": 0,
"osc_noise_p": 0.360000,
"osc_ratio_p": 0.880000,
"osc_offset_p": -49,
"osc_index_p": 0.230030,
"osc_timbre_p": 0.480000,
"osc_pitch_exp_p": -1.880000,
"osc_pitch_lin_p": 500,
"osc_waveshape_p": 0.120000,
"osc_carrier_out": 0.290000,
"osc_mod_out": 0,
"gate_level": 0,
"gate_mode": 0,
"gate_decay": 1.224234,
"gate_level_p": 0.430000,
"delay_peakfreq": 3682,
"delay_drive": 0.712199,
"delay_peakres": -1.310000,
"delay_feedback": 0.492997,
"delay_freq": 9.227439,
"delay_input_p": 0.500000,
"delay_peakfreq_p": 1,
"delay_drive_p": 0,
"delay_peakres_p": 4,
"delay_feedback_p": 0.260000,
"delay_freq_p": 1.049977,
"delay_output_wet": 1.680000,
"delay_output_dry": 0.710000,
"filter_cutoff": 100.529083,
"filter_q": 0.802383,
"filter_mix": -0.055891,
"filter_cutoff_p": 0.760001,
"filter_q_p": 0,
"filter_mix_p": 0,
"output_input_gain": 1.210000,
"output_reverb": 0.118067,
"output_pan": -0.535774,
"output_reverb_p": 0.080000,
"output_pan_p": 0.320000,
"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, 1, 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, 1, 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, 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, 1, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0]
},
"key_scale": "European/bagpipe3",
"preset": "louis/sequences/ctseq[6]h[1]",
"maker_name": "Madrona Labs",
"app_name": "Aalto",
"app_version": 67585
}

One more observation ... it definitely seems related to the sample rate. I was able to get one instance "unstuck" by switching to 48 KHz and fiddling around with the timbre attenuator.

Thanks again. Great reportage! This is very helpful. I'll investigate ASAP.