Waveform tables

DSP, Plugin and Host development discussion.
RELATED
PRODUCTS

Post

Christian Schüler wrote:You can hear the switch even in cheap headphones.
Did you listen to the wave file i posted?

Here's why:
The worst thing to do is dropping off the highest harmonic at any point in time - it will cause a discontinuity, which has an infinite spectrum falling off at 6db/oct with the center at the harmonic in question (for instance 18kHz).

When switching the harmonics at a zero crossing this is simply a higher order discontinuity, for instance a C1-discontinuty (the wave slope will change instantly). This falls off at 12 dB/oct, but is still an infinite broad spectrum discontinuity.
Yes but consider for a minute that the harmonics coming in and out are many dbs quieter than the overall volume of the wave. So the discontinuity is very small in respect to the overall volume of the wave. Hence for everything but the very highest notes that 12db rolloff starts > 30 or 40 dbs down, and mostly way up in the high end of the spectrum where people either cant hear it or at the least can't perceive it.

So even by the time some of it is aliased into a part of the spectrum where it might be noticeable it is already past > 60 or 70 dbs down.
Essentially a ring modulation of the highest harmonic with a step function. The spectrum of the step function is shifted to where the harmonic is.

A ramp or window function has a much narrower spectrum than a step function, so when multiplied with the harmonic, the harmonic will be broadened but not as much as with an instantaneous step.
I know that.. but what does it matter if no one can hear it?

cheers,

chris

Post

Two people said they heard it. I, for one, want to please even these superhuman hearers.

Post

My kids can't hear it through mid-priced headphones. Maybe you need expensive headphones or studio monitors?

Post

mistertoast wrote: I cannot hear anything up near 22kHz. All my kids can, though. For testing, I'm going to shift this all down into a range I can hear.
If i drop it down a couple of octaves i can hear it.. but not when it's up in the 18khz range...
Two people said they heard it. I, for one, want to please even these superhuman hearers.
Hmm that certainly adds some doubt.
My kids can't hear it through mid-priced headphones. Maybe you need expensive headphones or studio monitors?
I have Yamaha Active Monitors, MSP5s.. supposedly they are flat up to 40khz.. I have some good quality Beyerdynamic headphones as well..

I cant hear it on either, so i don't know what to think tbh.

I think i might go with it anyway.. and if people notice or take issue with it i'll change it.

chris

Post

>>I think i might go with it anyway.. and if people notice or take issue with it i'll change it.

I doubt people will notice in a pitch bend. Where to look out, I'd guess, would be in pitch change via LFO when there's no lo-pass in the chain.

Post

I'm Kieran, aka dblue, aka illformed | illformed.com | Glitch 2 now available for Windows, Mac and Linux!

Post

Cheers for listening and trying again.. i did actually think afterwards that 32 bit float was probably a bad format to post.. it's just i always dump that so i can get the extra resolution when i FFT it.

chris

Post

> Did you listen to the wave file i posted?

Yes, its inaudible in there, but the note was too low

- put the same note 3 octaves higher, a signle harmonic will make a significant contribution then,
- and put a vibrato setting so unfortunate that the highest harmonic repeatedly switching in and out.

Optimize for the worst case.

Post

Christian Schüler wrote:> Did you listen to the wave file i posted?

Yes, its inaudible in there, but the note was too low

- put the same note 3 octaves higher, a signle harmonic will make a significant contribution then,
watch yer eardrums with this one.. it's a bit unpleasant

http://www.flak.clara.co.uk/waveSwitch.wav

3 octaves higher and I still cant hear it.. The harmonic dropping out is around 19k.

- and put a vibrato setting so unfortunate that the highest harmonic repeatedly switching in and out.

Optimize for the worst case.
Honestly ive tested all sorts of cases, long slow / fast glides, differing vibrato, ect.. I couldn't find any typical situation where it was audible (to my ears) as long as the harmonics coming in/out were above 18 to 19k.

The pop is definitely there because you can hear it if you change the sample rate down to 12k.. its more obvious if you drop it further.

But i have my doubts the audible click is caused by the discontinuity rather than just a bump in the signal power. I used a 12 pole butterworth IIR to filter out the harmonics 18..22.5k, on the table switch wav. I resampled both the original and filtered one down by 2 octaves.. and the click was gone in the filtered version. If it was broadband noise.. starting at 18k it should be aliased down out of the filters range before the noise has rolled off more than 2 or 3 dbs. So if the click was due to broadband noise from the discontinuity then i cant see how filtering out just the top 10% of the spectrum would remove anywhere near enough of it to remove the pop.

But i have to be honest i wasn't expecting the filter to remove the pop, maybe reduce it a bit.. and im still not sure why it worked so well.

chris

Post

I'm going to go with my original plan to diminish the top harmonic as it approaches Nyquist. It doesn't hurt anything.

I think you're fine though. Seems like most people can't hear this even under the best conditions.

Post

I've added the SQ80 waveforms to my synth. They are a nice contrast. Loooooow rez.

Post

mistertoast wrote:How could a BLEP be faster than a table? Doesn't the BLEP come out of a table?
It is. Because you don't interpolate on each sample from the minblep table, you only add 32 samples from the blep table to the output on each amplitude step (32 - more ore less, depending on how mouch oversampling you used when you generated the minblep).
I got good results (speed/quality) using fixedpoint too.

Post

If you don't interpolate from the blep table, then the start time of the blep jitters (relative to the phase of the wave), doesn't it? I thought the performance gain of a blep table came from the fact that it was the same table at all frequencies, and tiny, so it is much easier on data cache.
Image
Don't do it my way.

Post

Borogove wrote:If you don't interpolate from the blep table, then the start time of the blep jitters (relative to the phase of the wave), doesn't it? I thought the performance gain of a blep table came from the fact that it was the same table at all frequencies, and tiny, so it is much easier on data cache.
Well, you can either interpolate, or you can oversample the blep, and then as you add the blep, select the phase from the blep that is most fitting. Or a combination of both (which is what I'm doing)

My spies tell me antti uses a blep table with 64 branches and no interpolation. My spies also tell me that aciddose uses 8 branches with spline interpolation. Nobody is complaining about either, right? :D (I might be wrong about what they do, btw).

I've decided to write up a tutorial on BLEP. :shrug:

Post

The more tutorials the better.

Post Reply

Return to “DSP and Plugin Development”