morphing waveforms
I found a morphing waveform patch a while back based on 2d wave on the list but it sounds like crap when you FM it so im trying to make a new one from the built in waves such as saw~ and rect~, now Im trying to figure out how to have 1 number that mixes them all or a way to turn up "sineness, sawness" without signal exceeding 1. and -1. and keeping it relatively normalized. Is there a way to either make the 2d wave one sound decent with FM or do this distribution thing? Im leaning more to the built in waveforms cause I like the fact they are bandlimited.
Heres the patch so far
It sounds like you want a constant-power crossfade between two source
waveforms. This is achieved by roughly:
Total = wave1 * log(faderVal) + wave2 * log (1 - faderVal)
do you happen to have the source for the original morphing waveform
patch? I'll search the archives for it, because it sounds neato :)
_Mark
On Apr 10, 2007, at 2:17 PM, Nicholas C. Raftis III wrote:
>
> I found a morphing waveform patch a while back based on 2d wave on
> the list but it sounds like crap when you FM it so im trying to make
> a new one from the built in waves such as saw~ and rect~, now Im
> trying to figure out how to have 1 number that mixes them all or a
> way to turn up "sineness, sawness" without signal exceeding 1. and
> -1. and keeping it relatively normalized. Is there a way to either
> make the 2d wave one sound decent with FM or do this distribution
> thing? Im leaning more to the built in waveforms cause I like the
> fact they are bandlimited.
>
>
> Heres the patch so far
>
> #P window setfont "Sans Serif" 9.;
> #P flonum 214 61 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
> #P flonum 106 191 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
> #P flonum 170 187 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
> #P flonum 226 186 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
> #P flonum 293 185 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
> #P user ezdac~ 374 99 418 132 0;
> #P window linecount 1;
> #P newex 262 206 35 196617 *~ 1.;
> #P newex 204 209 35 196617 *~ 1.;
> #P newex 146 212 35 196617 *~ 1.;
> #P newex 90 210 35 196617 *~ 1.;
> #P user scope~ 116 248 246 378 256 3 128 -1. 1. 0 0. 0 0. 102 255 51
> 135 135 135 0;
> #P newex 226 105 55 196617 phasor~ 2;
> #P newex 263 167 40 196617 cycle~;
> #P newex 205 163 40 196617 rect~;
> #P newex 146 166 40 196617 tri~;
> #P newex 93 166 34 196617 saw~;
> #P connect 0 0 6 0;
> #P connect 15 0 0 0;
> #P connect 14 0 6 1;
> #P connect 9 0 5 0;
> #P connect 8 0 5 0;
> #P connect 7 0 5 0;
> #P connect 6 0 5 0;
> #P connect 4 0 0 1;
> #P connect 15 0 1 0;
> #P connect 1 0 7 0;
> #P connect 13 0 7 1;
> #P connect 4 0 1 2;
> #P connect 2 0 8 0;
> #P connect 15 0 2 0;
> #P connect 15 0 4 0;
> #P connect 12 0 8 1;
> #P connect 4 0 2 2;
> #P connect 3 0 9 0;
> #P connect 11 0 9 1;
> #P connect 4 0 3 1;
> #P window clipboard copycount 16;
>
> --
> -=ili!ili=- www.Axiom-Crux.net -=ili!ili=-
this works ok, but its not anti-aliasing
how are you going to use those (very nice sounding) objects for FM synthesis? you can't drive them by phase, so the pitch of your oscillators will go haywire when you modulate them. unless thats what youre looking for.
morphing the various waves by crossfading won't morph the harmonics properly, it'll just mix across to the new harmonics. i think. you need the peaks of a sine to shift together to form a saw wave. you can't do that by adding the waves...
This patch was built to morph between window functions. It could easily
be adapted to morph wavetables being read by a cycle, or some such
other, object.
It is currently set to read a directory of wavetables in a subdirectory
of the patch called "windows".
Note: requires jitter.
b
--
barry threw
composition : sound : programming
http://www.barrythrew.com
bthrew(at)gmail(dot)com
857-544-3967
Today, Noise is triumphant and reigns sovereign over the sensibility of men.
- Luigi Russolo, The Art of Noises
Both of these are very cool, I like the phasor one but Im wondering how to band-limit things so that I don't get aliasing at high frequencies, and also if its possible to get "triangleness" :P
Ill find the 2d wave in a minute and post it. Its really cool and does exactly what I want but sounds like crap when you freq mod it, not at all sure why.
i'm not sure how the antialiasing oscillators work. is it simply band limiting? i guess you need to know how to make a basic antialiasing oscillator first. (dont ask me!) preferably make one thats phase driven so you can be pitch stable when you modulate it
in the meantime this patch has primitive triangleness
this is probably the one you mean. its not really morphing the oscillators though. it just crossfades between them, the transition from square to saw is a mess
max v2;
if you look at a spectroscope when you fade from a sine to a saw in the 2dwave patch, the harmonnics all get introduced at the same time, its a straight mix. if you look at the way using kink~ to skew a phasor driven sine affects the spectroscope, it introduces the lower harmonics first, the high ones last, so it seems to actually morph the harmonics. maybe more musically useful?
for synthesis of bandlimited oscillators, read this:
http://www-ccrma.stanford.edu/~stilti/papers/blit.pdf
or for even more in depth (more than just oscillators):
http://www-ccrma.stanford.edu/~stilti/papers/TimStilsonPhDThesis2006.pdf
mark
On 4/10/07, Nicholas C. Raftis III wrote:
>
> Both of these are very cool, I like the phasor one but Im wondering how to band-limit things so that I don't get aliasing at high frequencies, and also if its possible to get "triangleness" :P
>
> Ill find the 2d wave in a minute and post it. Its really cool and does exactly what I want but sounds like crap when you freq mod it, not at all sure why.
>
> --
> -=ili!ili=- www.Axiom-Crux.net -=ili!ili=-
>
BIN you rule! Now I just need to find a way to map this all to one slider, or not, shooot this is a wicked waveshaper! Throw in some chebyshev and you got yourself a party!
Sorry just watched Teladaga nights hehehehe
how did you make this triangleness???? Im very confused, it looks like just another float plugged into the overdrive?
ok i get it, overdrive does waveshaping both ways, inward and outward, interesting..
As far as this bandlimiting thing, sorry IM an art student, didn't take calcutrigonomitrie 501, so I don't really undersand these equasions or how to translate them into msp. Im getting great results with FMing this thing BIN gave, Thanks so much!!
if you could get a nice short sample feedack delay going cheaply (let me know if you do), you could make your sawness by feedback, and your square/triangleness using overdrive~ this will only work at small vs sizes, pref 4 samples or less
FWIW, here's another way to do morphing waveforms using a 2D jitter
matrix to store 8 wavetables with interpolated values. I can't remember
if I published this patch somewhere yet, but whatever. For more of this
kind of Jitter audio trickery, check out the Noisy Matrix article on the
website.
Andrew B.
YOu guys both rock! Good work Andrew! Bin, I think I had a dream that you ended up being the owner of this insane club around here called the 7th circuit. And then I put my foot in this flowerpot and fell through it into another dimension.. strange..
I checked out your tunes, good work, check mine if you have the time.
www.myspace.com/axiomcrux
man that feedback saw is strange as hell!
ha. i need someone to dream me up a new job. 7th circuit...thats something to do with neurogenetic programming... more fun stuff to try at home!
this patch does phase distortion to create square or saw waves. the phase driven squareness is alot less CPU hungry than overdrive~ or arctan distortion.
although the way the sine changes when you increase both sawness and squareness is kind of strange... not really like overdrive~
CZ101 used this kind of synthesis ..supposedly most dancehall riddims use the CZ101 bass, or sample it......
Damn that one is pimp too, when you increase them both it makes it like duty cycle for the square!!!!!! wicked!
do you think bandlimiting using low pass filter at half the sample rate would work??? Im gonna do some tests..
Man freq and phase modding that one is nuts. sounds like circuit bent!!!
if you want to FM the patch i posted you'll have to add a pong~ 1 0 1 before the sqaw object to wrap the phase between 0 and 1
cant I just FM the phaser?
yes you could, i didnt think of that.. as long as the input to that object is between 0 and 1, it doesnt wrap phase (like cycle~ does) with out a pong~ in there
heres another CZ101 type phase distortion, i think it was supposed to sound like a resonant filter
bin ray skrev:
> heres another CZ101 type phase distortion, i think it was supposed to sound like a resonant filter
> ...
Haha, that one's great - try setting the top cycle~ to 172.4 - then it's
really interesting actually!
Thanks a lot for uploading these, I've never bothered doing them myself,
and I'm definitely getting into my own PM sounds now.
Andreas.
Damn Bin your a never-ending barrel of phase driven treats!!!
this tread rules!! thanks BIN and Andrew!
Im going to experiment and try and make a new one :D
This thread is amazing.
I implemented Barry Threw's suggestion and it is exactly what I have been looking for. I have some bugs with it though. I wanted to use larger samples so I increased the buffer sizes and the size of the dimension list in the jit.matrix object (I am not familiar with jitter). This works fine as long as you don't change samples too quickly, anything over a 1 second gap between sample selections causes a crash. I have modified the original patch slightly so that you select which sample to load and then send a bang to zl reg to load it. While this works I sometimes have to send it 2 bangs to get the bottom buffer to recognize the current sample. So while it works, sort of, I perform live a lot and would like to make this run smoothly without fear of crashing. Any suggestions