That's not hard: just use expr~
[osc~ vibrato_rate] | [expr~ ($v1>0)*$f2*$v1+($v1<0)*$f3*$v1]
$f2 and $f3 are floats for your amplitudes for above and below respectively
Chuck
On Nov 6, 2007 1:00 PM, Libero Mureddu libero.mureddu@gmail.com wrote:
Hi list, continuing my experiments with vibrato and glissandos, I ended up in this: I´d like to have a vibrato around a certain frequency, in which I can decide to go upwards of a certain amount (ie one octave) but downwards a different one (ie. one 5th), and the possibility to control those parameters. In other words, I´d like to have a modulating wave that has a certain amplitude when goes up, and a different one when goes down. I do not want to use a sine wave with an offset, because I would lose the regularity of the 0 amplitude point. A friend suggested me to use two sine waves with same frequency but different amps and "half rectify" them, in the first excluding the negative values and in the second the positives, in order to create this pseudo-sine wave. See half-wave rectification here: http://en.wikipedia.org/wiki/Rectifier I made a simulation of the kind of wave I´m thinking, see attached jpg file. But, once again, I don´t know how to do that in pd, and I don´t know if there are better ways to do that. Hope my explanation is enough clear! thanks
libero
Libero Mureddu Vanha Viertotie, 21 as 417 00350 Helsinki Finland http://webusers.siba.fi/~limuredd/ http://www.myspace.com/liberomureddu
PD-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
The curve won't have a continuous derivative, which may sound weird if the curve is played slow enough. If ever your solution is not sufficient, it might be better to try to come up with the integral of some continuous function, but it may be a bit hard to make it align with the desired frequencies.
for wide vibratos, it's also important to ask yourself which scale you want to work in: linear vs logarithmic sound different for any sufficiently wide vibrato.
[osc~ vibrato_rate] | [expr~ ($v1>0)*$f2*$v1+($v1<0)*$f3*$v1]
how about? [expr~ ($v1+1)/2*$f3*$v1-($v1-1)/2*$f2*$v1]
It's cheap/quick, but it has the continuous 1st derivative you mentioned... I just tried it and it sounds alright.... doesn't do anything too weird/unexpected :) Also, it doesn't change the location of the zeros, or otherwise affect the duty cycle of the thing. The two parts ($v1+1)/2 and -($v1-1)/2 are just mixing functions that always add up to 1. There's probably lots of variations that would work as well or better, while still being continuous.