Other waveforms with MinBLEPs ?

DSP, Plugin and Host development discussion.
RELATED
PRODUCTS

Post

I tried the minblep code from the archive for generating bandlimited saw and square waveforms. Works excellent.
Now, can anyone explain how to generate other waveforms than saw and square, e.g., invsaw, super-saw and triangle (with pw) with this code ?

Thanks a bunch !

- KarmaFX

Post

Supersaw is just a bunch of detuned saws added up together.

Apart from that, can't you basicly make any "function based" (out = waveform(time) kinda) bandlimited using minbleps at the discontinuites?

Post

stefancrs wrote:...can't you basicly make any "function based" (out = waveform(time) kinda) bandlimited using minbleps at the discontinuites?
Maybe...my guess is that it is really simple... but since I don't know how blep's work, I don't know how ? Any code or explanation appreciated :)
Thanks.

Post

Basicly, what you do when you use minbleps is that you apply those in the discontinuities of the waveform to "simulate" a discontinuity in the analouge realm (they don't exist, I'm just trying to explain here). Hence you remove the aliasing a normal, "ugly", signal step would introduce.

Do I make any sense? Otherwise I guess you'd have to read the papers better, or check out the previous thread on the subject:

http://www.kvr-vst.com/forum/viewtopic.php?t=45778

Post

Cool, so this means that is is possible to produce "bandlimited" versions of any kind of signal...even presampled stuff,e.g. in a wavetable ?

Is this easy to derive from the code in the archive...I'll have a look at the paper now...but I'm not really sure what discontinuities you are referring to ?

Thanks!

Post

A discontinuity = a step, as when the square wave suddenly goes from -1 to 1. A perfect square wave does this in zero time, hence it has an infinite spectra, this will cause aliasing so you have to use lowpass filtered steps instead. That's what the minBleps are.

Read, and understand, http://www-2.cs.cmu.edu/~eli/papers/icmc01-hardsync.pdf

:)

No, you can not use it on sampled waveforms since you have no idea about the derivatives etc.

Post

Okay, I'll read the paper !
Though, I guess I was hoping for a "do-this-and-it-will-work" kinda answer :)
But hopefully I'll learn something new in the process.
Thanks again, stefan.

Post

Would it work to integrate a bandlimited square wave in order to generate a bandlimited triangle?

Post

hey, karmafx, your delay sounds lovely! simple and nice, clean sound.

Post

texture wrote:Would it work to integrate a bandlimited square wave in order to generate a bandlimited triangle?
Thanks, Yes I'm guessing it would... I seem to recall reading that somewhere too...but I dont know how to do that ?! Any thoughts ?

Post

mauseoleum wrote:hey, karmafx, your delay sounds lovely! simple and nice, clean sound.
Thanks man! Glad you like it :) I'm working on a reverb effect and a synth now...

Post

texture:
Okay, I just tried what I think you suggested. I simply sum the square wave contribution for each getsample iteration and output that (scaled) as triangle output, and resetting the sum when resetting the phase.
I get something that looks somewhat like a triangle, but not quite... the result sounds like it is bandlimited though - which I guess makes sense.
Has anyone tried this ? and got good results ???

stefan:
I read the (slightly confusing :) ) paper...but think I grasped the general idea, however, I'm still not sure where to add bleps for a triangle wave... I mean saw and square waves have big discontinuites, but the triangle does not. Any hints anyone ?

Post

But the triangle too has discontinuites, every time it "changes direction". As far as I understand the paper, you have to pretend to switch between ramps instead.

The interpolation method works so-so. When resetting the sum value you produce a discontinuity, hence it will alias.

I'd go for solving a duty cycle ("symmetry") modifiable triangle wave instead, then you'd "automagically" have the sawtooth covered as well. It is doable with ramps and so on.

Note: I have never coded anything with minBLEP's. So I'm no expert in any way at all.

Post

karmafx wrote:Maybe...my guess is that it is really simple... but since I don't know how blep's work, I don't know how ? Any code or explanation appreciated :)
Thanks.
I have code for generating MinBLEPs posted on my site at http://experimentalscene.com/dsp/minbleps.php

Enjoy 8)

Post

dwerner wrote: I have code for generating MinBLEPs posted on my site at http://experimentalscene.com/dsp/minbleps.php
Enjoy 8)
Yes, I visited your site yesterday actually :)... Looks cool, but it doesn't clarify how to build a triangle wave with minbleps ?!
Do you have code snippet that generates that ?
Eli talks about it in the end of his paper, but does not go into detail.

Also, I'm curious.... in the text you write that you add minbleps on both side of the discountiuity... but (as far as I can see) the MinBLEP code in the archive only adds a single blep. Is the code in the archive wrong, or am I missing something ?

Thanks.

Post Reply

Return to “DSP and Plugin Development”