Dust Analyzer (still "beta") [was: quickie signal analyzer proto]

VST, AU, AAX, CLAP, etc. Plugin Virtual Effects Discussion
Post Reply New Topic
RELATED
PRODUCTS

Post

Robin from www.rs-met.com wrote:
mystran wrote:Since the "auto-correlation" (well, technically cross-correlation between snapshots) algorithm is so ridiculously simple (and cheap), yet effective, I thought I'd share how I do it, since many simple scopes seem to have trouble tracking wave-forms with high resonance filtering, etc...

So here's the algorithm: [...]
do i get that right that - from a high level perspective - the algorithm effectively computes an offset that maximizes the cross-correlation between the buffer shown in the current frame and the buffer shown in the previous frame?

...or stated differently: finds the lag, for which the cross-correlation between previous and current buffer is at its maximum and shifts the current buffer by that amount?
Yeah, pretty much. One can add further hacks to trade-off lag vs. stability and it might actually make sense to only FFT part of your buffer (depending on the maximum shift you want to allow) but .. yeah. Traditional zero-crossing sync does have the advantage that (when it works correctly) it's easy to keep the sync point at the particular position in screen, where as the correlation (as described above at least) is essentially "floating." Also the correlation is limited by FFT precision, so sometimes it can pick bogus estimates, but most of the time it works perfectly well. :)
as for the "true" frequencies of spectral peaks - this might be helpful:

https://ccrma.stanford.edu/~jos/sasp/Op ... ctrum.html
Well, the "quadratic on dB magnitude spectrum" is the part that I don't like. What I was thinking was to fit a Lagrange cubic or some such poly on the raw complex spectrum and just finding the maximum norm. This isn't audio rate stuff so "heavy" math isn't such a deal. If I draw everything using a general purpose anti-aliasing polygon rasterizer (and currently software-blending, though I could move that part to GPU), so a bit of iteration for peak finding won't make much of a difference. It's not high priority though, I want more "basic stuff" first.

Speaking of polygon rasterizers (the curves are just "stroke polygons" for paths), that's what I've spent the last few days at. I basically wrote two new rasterizers in the last two days, only to find out that neither of them comes close to matching my old 2006 algo (which approximates 16x16 samples). The second one isn't too bad actually (with exact 8x8 samples at least), but in the process of writing those, I did come up with several HUGE performance improvements to the old algorithm (to the point that my FFT is now a significant part of the drawing process, rather than some 1% detail). :)

Post

Thank you for this one Mystran ! (and for the others plugs too), I've just succesfully used the oscilloscope mode to program a growling FM bass in Odo DoubleSix synth ^^ Not so easy when you don't own FM8 or Sytrus, but thanks to your plug that lock the waveform in osc mode, I could check what the waveform of my modulators were looking like, and thus achieve acceptable results while modulating my carrier !!

Thanks again !

Post

Thanks for sharing!
This is just what i needed. Simple and reliable.
I usually use Stillwell's Schope, but this beats it in most respects.

Post

Really enjoying this!
no sig

Post

Ok uploaded an updated build, 0.4.0, comes with scope line-draw option (might improve quality later), bug-fixes, basic phase XY-plot (also "power" or "complex squared" version that I have no idea if it's "correct" in any mathematical sense, but I find it useful anyway). The empty half-window for "phase" mode will get some more stuff later (eg correlation meters), but I got side-tracked with all this polygon drawing stuff..

There is still some issue with performance when running multiple copies in the same process (running in FL with wrapper processes it's fine, so it's a GUI thread stall somewhere.. will have to investigate more), but it should be a little better in general now.

edit: oh and there's the "waveform align" thing.. if you're just working with "normal" stereo signals, ignore this.. what it does is if you have 2 different signals (eg two versions of the same plugin code while developing, or maybe a model with original) in L and R channels and you'd like to compare them visually, then it'll try to align them automatically so you don't need to try to phase-lock them. In most cases it works reasonably even when the signals are slightly detuned, but it's not exactly perfect (so don't panic if it doesn't work or syncs at large offsets: sometimes switching octaves or adjusting frequencies slightly can make it work).

Post

Oh, btw.. please report if you notice excessive framerate variation with the new version.. there might be some weirdness going on, but I only have two systems to test with, and one of them in unreasonably fast and the other is a slow laptop that can't really run low-latency ASIO reliably.

Post

Hi, I don't have any text drawn on the label area tied to the X/Y visor in spectrum mode (with 0.3 either and I don't know for previous version as they both crashed), other text displays fine. nVidia 7950GT graphic card with old (OpenGL 2.0) drivers which I cannot upgrade. Do you think you can do something about it?

The phase scope (which begs for a resizeable GUI so it can be bigger :hihi:) is awesome, especially with the autozoom option on, surely one of best out there already. And so are the other modes too IMO. :tu:

Thanks. :)

Post

eidenk wrote:Hi, I don't have any text drawn on the label area tied to the X/Y visor in spectrum mode (with 0.3 either and I don't know for previous version as they both crashed), other text displays fine. nVidia 7950GT graphic card with old (OpenGL 2.0) drivers which I cannot upgrade. Do you think you can do something about it?
I wouldn't call any drivers for 7950GT "old", since I need approximately TNT2-level functionality (actually a bit more, since TNT2 only did 2 texture units and I need 3 for some stuff.. but you get the point). Anyway, thanks for reporting this: apparently black on white text doesn't currently render correctly if sub-pixel processing is disabled; I do my own sub-pixel smoothing, but it's disabled if the system isn't doing it either. Should be easy enough to fix.. there's another bug to fix too, but should be fixed later today.

edit: yeah ok, this just a matter of forcing color alpha to 1, so it does "normal" blending rather than additive..

Post

0.4.1:

- fixes non-subpixel text rendering for scope overlay
- slight GUI performance boost (less strict conditions for some fast-paths)

Post

Btw, eidenk may I ask what OS you have and whether you've specifically disabled cleartype's subpixel smoothing on purpose (eg CRT), or is my detection failing?

Post

mystran wrote:Btw, eidenk may I ask what OS you have and whether you've specifically disabled cleartype's subpixel smoothing on purpose (eg CRT), or is my detection failing?
I am using Windows ME Plus, eg enhanced with some unofficial add-ons to make it more compatible with NT programs, it's possible to get Cleartype running installing one of those and the Microsoft Reader which installs the cleartype dll but I got rid of it as it degrades rather than enhance the readability of text on my LCD monitor, eventually there may be traces left of it having been installed and enabled.

The text on the label now displays fine with this new update, thanks.

Post

Oh ok, then you probably don't have the registry settings. :)

Anyway.. with regards to the damn polygon crap... after uploading 0.4.1 I did some hacking, and now I can do this (with reasonable performance):
Image

Basically running the "exact 8x8-samples" rasterizer (which is not used in the public builds yet) with the crap that one gets by convolving a brush (here a circle approximation) with each line-segment individually (ie "brute force stroking") and drawing the union.

The line-width is too much here, but given the crappy quality of the horrible old stroking code to work around the limitations of the old rasterizer, I'll probably switch everything to the new rasterizer in the future.

Post

Oh and if someone is wondering why I draw polygons and not just min/max the curve.. it's more fun to solve the harder problem to get your rasterizer to do it automatically. ;)

Post

i just tried the thing
the L/R phase lock works no matter what i did with the two signals i was comparing, nice!
it'd be nice if you could zoom-out to see a larger time slice
but even as it is right now it's a great tool already, i wish i had it a year ago ;]

the plugin worked without any problems on my stupid intel video card (which is not famous for good openGL implementation)
i tested in Rack Performer
It doesn't matter how it sounds..
..as long as it has BASS and it's LOUD!

irc.libera.chat >>> #kvr

Post

Hi Mystran,

Any tips on how you get such a steady frequency display like in your analyzer?
In my own project the display is very jumpy even with the use of window overlapping and taking the maximum value of several windows.

thanks,
rola

Post Reply

Return to “Effects”