How does MSP anti-alias ?

simonkemper's icon

Does anyone know what Kind of anti-aliasing technique the MSP Oscillators rect~ saw~ and tri~ are using?

Is it just Additive Synthesis of bandlimited sinusoids or is it done with the help of bandlimited Impulse trains? Or something completly different?

I just wanted to know 'cause i just made some progress writing my own blit-generator...

mzed's icon
simonkemper's icon

Yeah, i know that paper, definitely a good one but... does that mean MSP is using this kind of anti-aliasing ?

pid's icon

i do not know the answer.

but if you listen to saw~ you can tell it is an alias suppressing algo. i spent quite a while listening to it (i have no life) and i think it is an upsampled blit implementation with high quality dcblocking on the output (steeper than if you just use a biquad). (although chris on these forums once suggested it was blep, mostly to do with its age). saw~ is rich in higher harmonics and almost aliases a lot at higher frequencies. it is a lot better in max6 than max5 or earlier. to compare it to a DFT implementation just look at the bandlimited oscillators example in the gen~ examples folder - that saw is a lot 'purer' ('duller' in tone) and rather cool. moreover i would like to know what resampling filtering is going on in saw~ - how it gets that 'shape' to let the higher partials ring.

people way more qualified than me and my ramblings could offer more insight i guess. and i don't think there would be any serious 'giving away of important secrets' if cycling74 just told us. ha.

simonkemper's icon

Yeah,

i absolutely agree with you. I just finished the work on a max msp 6 based Synth which uses our high-res protocol (we have a keyboard with multitouch-pads inside every single key - gives you that missing dimension - continuously polyphonic control over expression : www.endeavour.de ) ... And the rect~ and - especially- the saw~sound so nice ... so damn nice ... Or this can be archieved with just doing a lot of upsampling ...

But i also think there is a lot convolved in the waveform generation. maybe ... i try to figure it out later (i have a life .. and a passion)

Thanks,

Simon

Peter McCulloch's icon

Sounds like a cool keyboard! This definitely can't be achieved practically with upsampling, since sawtooth and square partials decay linearly in gain. I like the PTR algorithm for sawtooth and square, though I've also had pretty good luck with the tanh distortion based model for square waves. (It was in a CMJ article on distortion-based synthesis, IIRC)

simonkemper's icon

Thank you Peter,

it will be a lot cooler in the next weeks. Be sure to check out our Homepage right after October the 26th!

Yeah,

synthesis ... At the moment i'll leave things unchanged. The Synth does a very good sound, compared to other high res software synthesizers. And it is very stable in its sound. When there will be more time i'll come back on that and start writing my own interpretation of a synthesis engine... But for now .. I have to make the last things in GUI-Development ... And this sucks ;-( But a good synths needs a good GUI

Simon

Peter McCulloch's icon

If you're looking for filter options, I have a ladder filter implementation in my toolbox. It does soft-saturation and self-oscillation, and has multiple modes.

simonkemper's icon

Hello Peter,

yeah, i just tested it ... i like the sound very much, a lot better than my interpretation of a "ladder"-like filter. If you won't mind i would like to implement it in our synthesizer.

Simon

Peter McCulloch's icon

Sure. Please include it as the PM.Ladder~ abstraction (rather than as a subpatcher) so that it retains the ICST licensing info, and also so other people can find it. Thanks!

simonkemper's icon

Sure,

i will include it as an abstraction and leave it unchanged. Also, if you wont mind, I'll mention you in the credits of our evosizer. When im done with it, I'll Tell you!

Simon

Peter McCulloch's icon

Sounds great, and glad it's of use.