intro soft-synth query
category: general [glöplog]
eye: You probably have something like granular synthesis in mind.
I suppose most intro softsynths use a mixture of subtractive, FM (those two being the most important), additive, AM (for envelopes) and maybe Ringmodulation synthesis. But I am very newbie in that field, so you should better ask kb :-)
Here is an short overview about different softsynth algos, by googling them you will find lots of info:
http://www.sonicspot.com/guide/synthesistypes.html
I suppose most intro softsynths use a mixture of subtractive, FM (those two being the most important), additive, AM (for envelopes) and maybe Ringmodulation synthesis. But I am very newbie in that field, so you should better ask kb :-)
Here is an short overview about different softsynth algos, by googling them you will find lots of info:
http://www.sonicspot.com/guide/synthesistypes.html
i happen to know other guy who has written good introsynth besides KB. He says there's no way around trying and listening. And keeping in mind that for most known algorithms there is probably a BUZZ machine so one would try it out on it before actually coding.
Nontheless, i wonder what KB_s opinion is. He's currently offline but i think he won't miss a chance to prove his 1337ness here. ;)
Nontheless, i wonder what KB_s opinion is. He's currently offline but i think he won't miss a chance to prove his 1337ness here. ;)
eye: you could steal the idea of the waldorf wavetable synthesizers. Define samples of length 256 by their fft, and work totally in the fft domain to do the wave morphing and by doing the ifft on the fly. At least one nice aspect of this method is that you get automatically band-limited (anti-aliased) waveforms.
I friend of mine sold waldorf's PPG classic models and assorted other vintage gear, and the waldorf way of doing wavetables is quite weird and wonderful ;)
shame you had to haul all the floppies around
shame you had to haul all the floppies around
this thread gets my *VOTE*! (hint hint it's up again)
In the end, it's the synth's effects that determine most of the sound's 'quality'. And also the modulation capabilities.
Yeah, but I wasn't interested in filters or effects or whatnot. I only want to know whether intro soft-synths use theoretical or modeled generator waveforms. That's it. Nothing more.
"Theoretical" or "modelled"? What's the difference?
I think he means "theoretical" as "easily generated" such as squares or sines, and "modeled" as prestored splines or pieces of samples to achieve some sort of physical modelling.
No, I'm not necessarily talking about "prestored data." Could be mathematically computed.
See, the thing is, a square wave on something like a Moog is not perfectly square. At the start of the duty cycle there will be a small curve before reaching a steady slew rate. At the top of the cycle there will be some "ringing" as the oscillator tries to flatten itself out. And finally something similar may happen at the other end of the duty cycle.
This is also true for analog sawtooths or triangles: they have curves and ringing and other tiny little details.
See, the thing is, a square wave on something like a Moog is not perfectly square. At the start of the duty cycle there will be a small curve before reaching a steady slew rate. At the top of the cycle there will be some "ringing" as the oscillator tries to flatten itself out. And finally something similar may happen at the other end of the duty cycle.
This is also true for analog sawtooths or triangles: they have curves and ringing and other tiny little details.
A square wave would not be a perfect square, since you bandwidth-limit it. Anything else just sounds bad.
I don´t think using non-bandwidth-limited functions is much of a problem if you are filtering the final instrument (which you are doing anyways). The result is slightly different if you use things like frequency modulation, but I doubt that it will be disturbing.
thom: those tiny little details probably result from the bandwidth limit (filtering), as analog signals are always bandwidth limited. (I think that´s what Sesse wanted to mention, anyways).
thom: those tiny little details probably result from the bandwidth limit (filtering), as analog signals are always bandwidth limited. (I think that´s what Sesse wanted to mention, anyways).
chock: bandwith limiting IS important. If your oscillator is producing lots of aliasing dirt no filtering will help you get rid of it. That's why most intro soundtracks avoid high notes like the plague ;)
That depends, of course, on whether your filtering is before or after the sampling (in a pure analog synth there is of course no sampling at all) :-)
If you're filtering (and by that you certainly mean lowpass filtering) before the sampling, doesn't that cound as bandwith limitation? *g*
Uhm, yes, but that's the only way I could get what chock said to make sense :-)
So does anyone actually generate bandlimited waveforms, or do you just oversample? (Or, uh, do nothing at all and say the aliasing is a 'feature')
Erm... sorry about that stupid question, but does actually anyone filter before sampling in a softsynth? I mean I couldn´t even filter sawtooth properly (at least not with sinc). Not to speak about other typical oscillator functions, like "unpure" sinus waves...
Argh, sagacity, you´ve been faster than me ;-)
We have bandwidth-limited (and gibbs-corrected; simply truncating Fourier series gives you weird ripples which aren't good) oscillators in Sanestation, yes. You don't first generate a waveform and then filter it; the second you sample you've already introduced aliasing and lost. Instead, you build up a waveform by doing the Fourier transform in advance and then summing sines up to the point where you want to filter. There was a thread about how to do this effectively on csipd or scene.coders a while ago, but I can't find it...
My version of bandwidth limiting is somewhere in the middle of real limiting and oversampling - call it box filtered infinite-times oversampling. Sounds quite good up to a few thousand hertz base pitch and has the big advantages a) next to zero additional code, b) only 20% slower than no band limiting at all (eg. doing a sawtooth by "sample[pos++]=(val+=freq)>>16;")
It's a bit tricky to implement tho. Much paperwork and many, many assembler optimization possibilities.
It's a bit tricky to implement tho. Much paperwork and many, many assembler optimization possibilities.
oh, I have that for pulse and tri/saw (morphable, consider a triangle wave with 'pulse width') waveforms only, sin and noise don't really need band limiting ;)
As another alternative, you can use minBLEP ( http://www-2.cs.cmu.edu/~eli/papers/icmc01-hardsync.pdf ), which can generate bandlimited versions of arbitrary waveforms. However, processor load increases with frequency, which is one reason why we didn't go for this in Sanestation.
Sesse: That sounds really interesting, I will give it a try (I didn´t realize that you could use Fourier series instead of Fourier integral... stupid me).
kb: I don´t really understand what you are talking about, but the problem with box filtering is, that you don´t have real bandwidth limitation. But if it sounds good... I´ll think about that, too.
Anyways, thanks to everyone, that gave me some new ideas :-)
kb: I don´t really understand what you are talking about, but the problem with box filtering is, that you don´t have real bandwidth limitation. But if it sounds good... I´ll think about that, too.
Anyways, thanks to everyone, that gave me some new ideas :-)
Chock: Since the signal is periodic, you can of course use Fourier series, yes :-)
So, the next questions are of course: How many intro softsynths are there out there by now? What is the most efficient way to model drums? And of course, will kb ever finish his softsynth tutorials? ;-)
So, the next questions are of course: How many intro softsynths are there out there by now? What is the most efficient way to model drums? And of course, will kb ever finish his softsynth tutorials? ;-)