ForumsSoftware ← voices yet again... request

hi randy, any chance of having the option to turn off the slight detuning of voices? i know this is to avoid phase issues with more than one voice playing the same note, but when using voices as a modulator for lfo speed, env2 loop speed etc, they drift out of time due to the detuned voices.

here's an example patch:

<Aalto pluginVersion="66054" presetName="quadspeed test" scaleName="12-equal" scaleDir="Gamelan" key_voices="4" key_unison="1" key_glide="0.00600000098" seq_trig="1" seq_rate="0" seq_quantize="1" seq_value0="0.00892853737" seq_value1="0.00892853737" seq_value2="0.00892853737" seq_value3="0.00892853737" seq_value4="0.00892853737" seq_value5="0.00892853737" seq_value6="0.00892853737" seq_value7="0.00892853737" seq_value8="0.00892853737" seq_value9="0.00892853737" seq_value10="0.00892853737" seq_value11="0.00892853737" seq_value12="0.00892853737" seq_value13="0.00892853737" seq_value14="0.00892853737" seq_value15="0.00892853737" lfo_freq="0.159999892" lfo_level="0.979999959" lfo_freq_p="0.940000057" env1_decay="4.37000275" env1_sustain="0" env1_release="1.68000221" env1_release_p="-1" env2_repeat="1.02968752" env2_release="0.390000075" osc_offset="-1.59999084" osc_timbre="0.909999967" osc_pitch="55.0000038" osc_waveshape="-0.839999974" osc_index_p="4.56999969" osc_timbre_p="-0.75" osc_pitch_lin_p="172" osc_waveshape_p="0.529999971" osc_mod_out="0.229999989" gate_mode="1" gate_decay="1.07999992" gate_level_p="0.169999957" delay_freq="109.999214" delay_freq_p="0.239999771" filter_cutoff="79.9999924" filter_q="0.329999983" filter_mix="-0.200000048" filter_cutoff_p="1.56999969" patcher_input_1="000000000000100000000000000" patcher_input_3="001000100000101000000010001" patcher_input_10="000000000000000100000010001" patcher_input_11="000000001011000000000000000" patcher_input_12="000000000000000100000000000"/>

leave it running for a while and timing will drift out of sync.
an option to have detuning on or off would be great...

The "voice" output from the KEY module has no detuning on it. That's what you're using to run the LFOs and make the envelopes, not the pitch. So you're just hearing little numerical errors over time that are practically unavoidable.

If you set this patch up on an analog modular, you wouldn't expect it to stay in sync at all. Any clocks need to be synched up somehow to run in phase over time. I would suggest using the sequencer, host sync and key trig to get what you are after.

oh. ok thanks.

heh - just found this back on the front page for some reason (??) so thought i'd load the preset to see what i was originally on about.
it looks as if the timing drift is caused by the slightly detuned Vox output(a phase avoidance thing?).

any chance of adding a 'pure' Vox output option? i'd like to use the Amp2's loop function a lot more :)

a cleaner patch:
<Aalto pluginVersion="66306" presetName="quadspeed test" presetDir="" scaleName="12-equal" scaleDir="" key_voices="4" key_unison="1" key_glide="0.00600000098" seq_trig="1" seq_rate="0" seq_quantize="1" seq_value0="0.00892853737" seq_value1="0.00892853737" seq_value2="0.00892853737" seq_value3="0.00892853737" seq_value4="0.00892853737" seq_value5="0.00892853737" seq_value6="0.00892853737" seq_value7="0.00892853737" seq_value8="0.00892853737" seq_value9="0.00892853737" seq_value10="0.00892853737" seq_value11="0.00892853737" seq_value12="0.00892853737" seq_value13="0.00892853737" seq_value14="0.00892853737" seq_value15="0.00892853737" lfo_freq="0.159999892" lfo_level="0.979999959" lfo_freq_p="0.940000057" env1_decay="4.37000275" env1_sustain="0" env1_release="1.68000221" env1_release_p="-1" env2_repeat="1.02968752" env2_release="0.179999992" osc_offset="-1.59999084" osc_timbre="0.909999967" osc_pitch="55.0000038" osc_waveshape="-0.839999974" osc_index_p="4.56999969" osc_timbre_p="-0.75" osc_pitch_lin_p="172" osc_waveshape_p="0.529999971" osc_mod_out="0.229999989" gate_mode="1" gate_level_p="0.169999957" delay_freq="109.999214" delay_freq_p="0.239999771" filter_cutoff="89.9999771" filter_q="0.370000005" filter_mix="-0.00401008129" filter_cutoff_p="1.88999987" patcher_input_1="0000000000000000100000000010000" patcher_input_3="0000000010000000100000000010000" patcher_input_14="0000000000000000000100000000000" editor_x="758" editor_y="652" editor_width="912" editor_height="624" editor_num="1" editor_anim="1"/>

I think this is a really cool patch! Do you by chance have a few more you could contribute to the user patches?

As I wrote above, the "voice" output from the KEY module (now "vox") has no detuning on it. I think that the ENV is to blame, in this case, for things going out of sync.

It looks like the way the ENV code is optimized makes slight errors in timing accumulate over time. I can look to see if there’s a an easy way to make this better, because I can see from your patch that it would be very cool.

It's not really the mission of the ENV modules to provide an accurate timebase though. In general with floating point math, things like free-running oscillators are not exact relative to one another unless you take great pains to make them so. Just like in analog, you have to provide a sync pulse somewhere if you really want things to be in sync. In this case you could just retrigger the note every few bars.

this is an excellent patch.

I also made a patch that utilizes the 4 voice to env2 repeat trick. You can play a kind of chiptune arrangement with this:

<Aalto pluginVersion="66305" presetName="8 bit rhythm chords" scaleName="12-equal" scaleDir="" key_voices="4" seq_trig="1" seq_rate="0" lfo_freq="1.00000012" lfo_level="0.199999988" env1_decay="0.99999994" env1_release="0.50000006" env1_xvel="0" env2_repeat="2.3296876" env2_release="0.109999999" env2_xenv1="2" osc_index="0.899999976" osc_waveshape="-0.899999976" delay_input="0.459999979" delay_feedback="0.359999985" delay_freq="6.8793745" delay_freq_p="-0.580000162" patcher_input_1="0000000000000000100000000000000" patcher_input_3="0000000010000000000000000100000" patcher_input_12="0000000000000010000000000000000" patcher_input_14="0000000000000000000100000000000" editor_x="46" editor_y="88" editor_width="912" editor_height="624" editor_num="1" editor_anim="1"/>

ok thanks randy, makes sense. i just half-assumed (heh) that the default value of the env 2 inlet when double-clicked was meant to be used as a value doubler/quadrupler etc and that it shouldn't drift, but yea no probs with retriggering.

about the user patches... i've already put quite a few in the patch share thread. is that what you mean by user patches?

Yeah, you know, just patches. Could I collect yours and include them with Aalto?

sure! will email you a bunch.

Sweet!