ForumsSoftware ← Is there a way to achieve bipolar mod amount with "vox" and the sequencer?

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
}

Some signals are unipolar and others bipolar. I tried to go for the most common uses of the signals in deciding which to make them. I think this could be explained better in the manual.

Hopefully the pan modulation you describe is not too tedious to set up with the aid of the animated dials. looking at the four signal values all at once in the dial, you should be able to dial in the amount of modulation you want quite quickly.

The lack of fine tuning of small amounts of modulation is a problem sometimes. I would like to add a numerical mode for precise control when it's needed.

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. :)

What I like better than the idea of bipolar / unipolar switches, is the addition of some way to offset / scale the data more easily after it comes from the source.

I think a signal coming from a source such as "vox" should reflect what the actual data is---in this case a voice number from 0-3. With sequencer output I can see more of a case for adding an output option since it's not representing anything in particular.

"some way to offset / scale the data more easily after it comes from the source"

+1 ... and also to mix multiple inputs too.

Bazille/Ace have quite a nice MOD module that can do this kind of thing.

uhe's are quite big because of the dials, but with your dials on the inlets, you could actually have quite a small module.
( though the issue is, the patch bay is where the big space restriction is I guess at he moment, so more input is going to be hard to find space for)

perhaps some kind of pop up control on the inlet, that allows mix/scale/offset, for the few occasions its really useful. (I know not clean UI, but takes no additional space)