From the original SynthMaker forum (2004–2014), with its members’ names and dates.
trogluddite ·
Goniometer is just such a cool word that I had to try making one...
NEW UPLOAD - VERSION 2.0.
A goniometer is either a very useful metering tool for investigating phase and stereo image, or it's just a really cool dancing piece of string - depending how wasted you are at the time. 😉 The osm loads with it connected to a little signal generator so you can play with pretty Lissajou shapes.
Use it as a VST insert on a stereo track or stick it on your master outputs; here's a Wikipedia article that gives you some understanding of what the shapes mean...http://en.wikipedia.org/wiki/Goniometer_%28audio%29
Two main controls...
The switch selects between a true goniometer with four quadrants (good for phase checking), and a one quadrant version which used LEDs to show peak levels, and a small goniometer showing RMS
The knob controls how long the 'afterglow' on the cathode ray tube takes to fade out.
Click on the little 'lid' at the top to open up a little 'settings' box where you can tweak the appearance and CPU load.
Thanks to mwvdlee and aliasant for pushing me in the right direction.
Use as you see fit - only condition is that the credits remain in place if you copy/distribute the osm/plugin.
Dell ·
Cheers trogluddite!
This meter is very handy for measurements.
Jay ·
In all my years i have never used one of these so I'm too not sure how to use it but, it looks bloody marvelous! I love it 😍
Thanks Trog
2nvu ·
Jay wrote: In all my years i have never used one of these so I'm too not sure how to use it but, it looks bloody marvelous! I love it 😍
Thanks Trog
Simple Jay, a Phaze meter will tell you how far out from centre ? the Bass is pushing, Bass being one of the most common attributers to untidy Frequencies because of its nature of pushing out hard & banging into other instruments & in doing so, robs them of there colouration in the Mix?, So what happens is Unwanted Phaze, So if the meter is telling you the Phaze is wide, time to reach for an inverse Plugin? Or you could just knotch out 50Htrz Home of the Ugly_HUM? from either kick or Bass, gauranteed to loose 30% up to 65% of Phaze , without any readings @ all 😉 lol having said that i do use them & i am gonna try Trog,s wee little PhazeOmeter 😀
2nvu ·
trogluddite wrote: Goniometer is just such a cool word that I had to try making one...
A goniometer is either a very useful metering tool for investigating phase and stereo image, or it's just a really cool dancing piece of string - depending how wasted you are at the time. 😉 The osm loads with it connected to a little signal generator so you can play with pretty Lissajou shapes.
Use it as a VST insert on a stereo track or stick it on your master outputs; here's a Wikipedia article that gives you some understanding of what the shapes mean...http://en.wikipedia.org/wiki/Goniometer_%28audio%29
Only two controls...
The switch selects between a true goniometer with four quadrants (good for phase checking), and a one quadrant version which better shows how the power is disributed across the stereo image.
The knob controls how long the 'afterglow' on the cathode ray tube takes to fade out.
Thanks to mwvdlee and aliasant for pushing me in the right direction.
Nice job Trig!
I never could understand those memory arrays; seems like you have to connect then to a dead-end.
BTW you might want to mention if is public domain or not...
trogluddite ·
Glad you all like. 🙂
infuzion wrote: I never could understand those memory arrays; seems like you have to connect then to a dead-end.
BTW you might want to mention if is public domain or not...
Yeah, the wave write primitive ouputs are just 'thru' from the inputs AFAIK - you just need something there to kick it into life.
Updates 'license' terms in top post - cheers for the reminder!
aliasant ·
trogluddite wrote: Glad you all like. 🙂
infuzion wrote: I never could understand those memory arrays; seems like you have to connect then to a dead-end.
BTW you might want to mention if is public domain or not...
Yeah, the wave write primitive ouputs are just 'thru' from the inputs AFAIK - you just need something there to kick it into life.
Updates 'license' terms in top post - cheers for the reminder!
I removed the truncate module all together and only use a resample down to 1000 with cubic interpolation.
Looks better on my rig, sort of. I do get some small sparks but they are only visible with clean waveforms like Sines.
The truncate got rid of 95% of the sparks but also got rid of some valid data leaving "holes" . I guess there is a balance here that each has to decide what suites them best...
I also changed the size from the static 3600 to a samplerate dependent one. 3600 is valid only for 44100.
I do get pretty high cpu values when I use it in SM but when I put it on the mastertrack in Reaper I get 0.10% !!
Weird but great 🙂
Again. THANX TROGLUDDITE !!! 😍 😍 😍
trogluddite ·
aliasant wrote: I removed the truncate module all together and only use a resample down
Weird isn't it - on my two systems the truncate/no-resample way seems to work really well, but using re-sample brings back the 'sparkles' - yet that alternative is working good for your system - might need to go over my triggers, changing the priority of the tick25 links seems to make big changes sometimes.
Your resampling thing has just given me a spark of inspiration - it should be possble to make the Counter/Wave-Write part do the downsampling and only write a value to the buffer once every few samples. Then the whole chain of Array/Draw operations have fewer co-ordinates to deal with right from the outset, and the counter will update more slowly which might make the timing accuracy less of a problem...
...caffiene required! 😉
mwvdlee ·
trogluddite wrote: Thanks to mwvdlee and aliasant for pushing me in the right direction.
I have no idea how I'm (partly) to blame for this. But looking at it, I'm sure the thanks will become mutual soon enough 😉
Really cool stuff and I like how you used memory writing for it. Given a good USB soundcard with high sample rate, you could build a usable portable oscilloscope with S|M. Back in school we had some ridiculously expensive aging Philips analog oscilloscopes, but for many educational purposes a 48000KHz sample rate would have been more than enough. It'd be interresting to see how well S|M could function as an oscilloscope.
trogluddite ·
mwvdlee wrote: I have no idea how I'm (partly) to blame for this
It was your 'Buffered Scroll' example a while back that gave me the idea for manipulating a bitmap frame buffer for the CRT phosphor fade effect!
bootsy ·
Really great work and thanks for sharing!
MegaHurtz ·
Yea.. all you need is an x and y input 🙂
trogluddite ·
mwvdlee wrote: It'd be interresting to see how well S|M could function as an oscilloscope
MegaHurtz wrote: Yea.. all you need is an x and y input
For the display part, just remove the rotating/scaling maths, and add one of Acrobat's cool grid generators...
...X and Y scaled -1 to +1.
Triggering (the scope, not SM triggers) might need doing in code, for edge detection etc., but timebases, scaling and waveform storage (in wav files maybe?) should all be straightforward.
Jay ·
hya do you mean an electrical test Oscilloscope? exactly what i am doing now as a project . there's a lot more to it than just a display for showing a waveform and whacking some electricity into your machine 😉 the working voltages is around 10volts max for imputing into a sound cards audio inputs! you can of course buy a fancy wee interface card for doing this or a pc based scope module but then, 5 mins with a soldering iron and a couple of everyday (very cheap)components sorts out the issues with voltages without breaking the bank.
I am using opto coupling to isolate the pc from the input since the voltages i am playing around with are pretty high (2600 volts sometimes higher! using MOT's and highpower flyback transformers)
so you need to set up a system that will reduce the input to a safe level and have your software set up with a ratio handling system to commute the values back into real world terms to be displayed on the screen.
you can use SM as a function generator and do some nice stuff like running steppers and pulse DC motors 🙂
Best Regards
trogluddite ·
Sounds like a job for FlowStone! 😉
Hear what you're saying about the hardware side of things - I use USB scopes at work a lot these days, those little range switching relays inside sure work hard to keep everything in range of the ADCs.
mvwdlee's educational idea is basically sound though - you can teach a lot about sound/phase/functions and the use of scopes perfectly well with a simulation on screen, maybe taking an audio input from a student's mp3 player.
Might have a go just for use as an analysis tool within SM - I always wanted a 'scope back when I was making analogue gizmos, you can tell so much about how a circuit is working really fast, especially with a dual scope.
Jay ·
Yes mvdlee is totally correct in his suggestion of this, i plan to show all round here how one can do a small circuit to achieve the desired results,Flowstone looks Great and i plan on delving in there and getting myself some of the gear 🙂
I was looking at buying one of those pc scopes since the real ones are too bloody expensive to buy for a new hobby!
So are the pc ones any good Trogg? and do they compare well against the expensive hardware ones?
i would love a 5 channel, 1Ghz one. but they cost thousands 😝
My scope will if i can get the software right, do the same as the pc based ones you mention, the plans i have received are basically the same as whats inside the ones at your work except, instead of paying £200/300 or higher mine should cost around £15-20 to self build. well i'm assured that will be the case - we will see 😉 I was advised to build one and use one of several free scope apps available on the net to run it but, i want to have a bash at doing the OS for it in SM first.
by the way am working on several Over Unity replications in case anyone wonders what the hell i am up to playing with thousands of volts for!and i am doing it as low amperage's as i can 😉
So far i have proven to myself that the bedini ssg is a genuine working OU device as well as the juelthief device, the slayer device, ond the stickler exciter. Cold or zero point energy is real, I used to be really skeptical but no more!
anyone interested in this type of thing should join us here http://www.energeticforum.com/ and head for renewable energy
best regards
mwvdlee ·
Jay wrote: i would love a 5 channel, 1Ghz one. but they cost thousands 😝
Which is perhaps the largest problem with an ASIO-based scope; you could get the 5 channels perhaps, but not the 1GHz. High speed ADC's are very expensive stuff. As I understand it, the best you could hope to get with ASIO and S|M would be 96KHz. Sufficient for hobby electronics and audio signals, not so much for analyzing current-generation hardware.
aliasant ·
And here I am.. sitting next to an unused 500Mhz 4 channel oscilloscope that I havnt even started using..... 😈
I spent yesterday trying to do what Trog suggested, sort of. I made a bigger memory and then downsampled using the
Get Array module.
The result looks pretty good. Much more stable but I guess it works bad at higher frequency. If the resample is removed it works better but still not accurate. There must be a better way to do something similar? For me its ok to use as a stereo field energy view but not much else.
I placed it next to Trogs v.1 for comparisson.
Deleted that version since I found a better more accurate way. Now it is much more stable at low frequencies and much closer to he original at higher frequencies.
Jay ·
yeh that's what i found mvdlee with the ADC's National Semiconductor do a 1.1Ghz one for about £25 each but you can do the hardware without them in other ways 😀
Re - Nikola Tesla was doing the same work 155 years ago working in the multi Ghz ranges without any of the hi-tech we have today!
you can even go as low -tech as the little hack thats all over the net using a few diodes,resistors and a PNP and a bridge rectifier or ten to make a pc osc. its quite accurate i am told but, there are still risks to your card.So you need to isolate it.
High voltage impulses at low current is one of the keys to what i am doing so i can get by without high current handling atm, electricity is only used to shake the zero point energy from the magnetic flux and it is the zero point i am after!
at the end of the day i will still be buying a real scope as this is only a temporary, project based attempt.
@ Aliasant. yes you are a devil! I think you should send it to me at once 😀 How can you refrain from testing everything in site! hell, i would ever be testing my wife and kids to see at what freq they run 🙂 and the dogs!
on the subject of frequency, i have been invited by a friend of a friend to sit in front of a machine that is supposed to kill cancer and many other diseases and viruses using hi freq sound and light! do you think that is truly possible? I can only hope. I can't remember what it is called 😕
anyway Best regards
trogluddite ·
aliasant wrote: I found a better more accurate way
Good improvements there - not had long to test yet, but first impression is that it's very smooth. The bigger overlaps between frames to give the trail a longer 'tail' look much better, especially ot low freuencies; and no gaps at all.
Just doing the final tweaks to my new version that resamples the stream before it hits the buffer - going pretty well so far with a noticable CPU saving, but not the improvement in the triggering that I'd hoped for.
Jay wrote: So are the pc ones any good Trogg?
Swings and Roundabouts - the ability to store stuff, do comparisons with reference readings, and take precise measurements with a quick click are great. Accuracy of measurement is also fantastic. OTOH, it's a bit like modern music gear - fiddling with mice and menus instead of just flicking switches; aliased pixels instead of a smooth curve Having all the presets and stored reference waveforms is great when I'm factory testing lots of PCBs, but for prototyping and experimental work I'd still much prefer an old CRT somehow.
Mind you, I'm only using relatively cheap 20MHz scopes - I'm just a production engineer, there's not quite the same demands on my kit as experimenting with the cutting edge science of bizarre new forms of energy! 😉
MegaHurtz ·
@The Luddite
Good yob man 🙂
it`s a nice haluconegenic one.
aliasant ·
trogluddite wrote:
aliasant wrote: I found a better more accurate way
Good improvements there - not had long to test yet, but first impression is that it's very smooth. The bigger overlaps between frames to give the trail a longer 'tail' look much better, especially ot low freuencies; and no gaps at all.
Just doing the final tweaks to my new version that resamples the stream before it hits the buffer - going pretty well so far with a noticable CPU saving, but not the improvement in the triggering that I'd hoped for.
Jay wrote: So are the pc ones any good Trogg?
Swings and Roundabouts - the ability to store stuff, do comparisons with reference readings, and take precise measurements with a quick click are great. Accuracy of measurement is also fantastic. OTOH, it's a bit like modern music gear - fiddling with mice and menus instead of just flicking switches; aliased pixels instead of a smooth curve Having all the presets and stored reference waveforms is great when I'm factory testing lots of PCBs, but for prototyping and experimental work I'd still much prefer an old CRT somehow.
Mind you, I'm only using relatively cheap 20MHz scopes - I'm just a production engineer, there's not quite the same demands on my kit as experimenting with the cutting edge science of bizarre new forms of energy! 😉
Im thinking about going back to your simpler way since I dont like getting the high latency =(
I can solve it with a delayed output but Im not sure if its worth it.
I also played around with other ways to present the data.
We have the M and S arrays so I fed them to a simple "Draw Ellipse" primitive via a V Loop and I got some really nice effects but not at all what I wanted and I had to downsample it a lot since it seemed the loop ate a lot of cpu =(
I have a version that feels ok but I hate all the compromizes. Isnt there a way to get a accurate & fast & flexible version ?? 😉.. pfew.....
trogluddite ·
aliasant wrote: Isnt there a way to get a accurate & fast & flexible version
Think the jitter in the green trigger system is the deciding factor. 😠 Ideally you need a sample accurate trigger synced to the refresh of the computer monitor - the latency would then be precisely constant at one frame of video.
Hadn't thought much about 'flexible', but maybe some user control over the parameters would be good - each user customise the response to their needs.
aliasant ·
trogluddite wrote:
aliasant wrote: Isnt there a way to get a accurate & fast & flexible version
Think the jitter in the green trigger system is the deciding factor. 😠 Ideally you need a sample accurate trigger synced to the refresh of the computer monitor - the latency would then be precisely constant at one frame of video.
Hadn't thought much about 'flexible', but maybe some user control over the parameters would be good - each user customise the response to their needs.
I guess what I was crying out for was a faster way to render the data. Yor method of getting us the M/S data using the mem is great and fast and the truncate and rotate modules gets rid of any 99% of the glitches and this doesnt really use any cpu at all.
Its when we try to render/display the data that cpu goes nuts.
What we need is a smarter way of presenting the data.
For me whos not really looking for a perfect goniometer but rather a nice, fast way to display the stereo field could do with a simple way to display it.
Maybe we only need the max of say the last 32 samples.
Maybe use a Line Prim to draw that number. Say middle of the render area/window = 0 then draw a line from 0 to n.
Or maybe use something else then Mid/Side. Maybe Mid for Y and Mid*Side for X. I hate trying to figure these hings out like this. Trial end error is my method..... 😉
Anyways. THe PALines do suck cpu especially if you, like me, layer more then one of them to get a more 3Dish look
Yor method of getting 2 channels to Floatarray is great. Just need to find a better way to use the result 🙂
mwvdlee ·
aliasant wrote: Its when we try to render/display the data that cpu goes nuts.
Which seems to true for pretty much anything I've ever tried to build.
You can do some quite complex stuff in green in a fraction of a millisecond but drawing a few pixels and the CPU breaks out in a sweat. Performance seems limited exclusively by the dimension of what you are drawing.
I've managed to get it somewhere like half a percent faster by doing basic optimizing; hardly worth it.
Also tried using a draw loop and lines instead of the PALines, but didn't get it to render anything. Might be that I did something wrong or might be that drawing a 1000 lines is a bit too much.
One thing that makes a worthwhile impact is restructuring the bitmap caching a bit; instead of drawing the lines both to the bitmap and the view (which is actually two redraws of the PALines as far as I know) and using the single bitmap draw to both feedback to the cache and draw to screen, I've used two bitmap draws, one to do the feedback, one to draw to view. It seems to increase performance by 10-20% on my system, though it's mostly a guestimated measure based on ProcExp reading. Seems PALines sucks just a bit more than an additional bitmap draw 🙂
Optimizing anything besides graphics to improve performance on this one is going to be insignificant; with graphics I get some 16-20%, without 2-6%. Graphics are clearly the problem.
aliasant ·
That made a nice difference! 🙂 From around 3% to 1.5% but is ard o messure. I jumps around quite a lot.
Wondering if that was me screwing up? Were there 2 Redraw Areas in it and you removed one of them?
I think it also looks smoother now but that might be my imagination 🙂
mwvdlee ·
aliasant wrote: Wondering if that was me screwing up? Were there 2 Redraw Areas in it and you removed one of them?
As I understand S|M's graphics system, any view input which has multiple views going in needs to render individually for each view. The original version had the sPALines view input connected to both the MGUI and the bitmap cache, so two individual views.
aliasant wrote: I think it also looks smoother now but that might be my imagination 🙂
I sure hope it's your imagination, otherwise I made a mistake 🙂
trogluddite ·
mwvdlee wrote: multiple views going in needs to render individually for each view
Nice work there - I've always been a bit confused about the 'triggering' of views, your .osm definitely seems to prove your theory about the multiple draws.
I've also managed to find a way to avoid plotting unnecessary points by using two alternating buffers, and got the 'interpolate before the buffers' thing working - looking very nice at 100fps.
aliasant wrote: What we need is a smarter way of presenting the data.
I've now got one alternative display working for the 'one quadrant' mode - it now has a 2D 'LED' peak meter that can be either a grid, or a weird 'raindrops running down a window pane' display.
I'll post up later today after I've tidied up the mess from last nights tinkering...
aliasant ·
trogluddite wrote:
mwvdlee wrote: multiple views going in needs to render individually for each view
Nice work there - I've always been a bit confused about the 'triggering' of views, your .osm definitely seems to prove your theory about the multiple draws.
I've also managed to find a way to avoid plotting unnecessary points by using two alternating buffers, and got the 'interpolate before the buffers' thing working - looking very nice at 100fps.
aliasant wrote: What we need is a smarter way of presenting the data.
I've now got one alternative display working for the 'one quadrant' mode - it now has a 2D 'LED' peak meter that can be either a grid, or a weird 'raindrops running down a window pane' display.
I'll post up later today after I've tidied up the mess from last nights tinkering...
Sweet 🙂
Im also working on on this.. still..... 😉
I just tried o skip the memory thing and jus use Mono to Graph without Rotate and with a small trunc and. well. Right now it looks much faser, no latency and minimum glitching...
I ave been most annoyed by the latency. I need as litle of that as possible.
Ill see if I can post a comparance later on.
aliasant ·
Ugh.
It looked great at ha particular combination of frequencys of the two Sin osc 😠 😊
Well.
I get the old sparks using the standard method with Mono to Graphs but they are quite rare and latency is low.
Ill wait until I see what you made before I post anything. Maybe you solved it 🙂
trogluddite ·
Version 2.0 now finished - see top post for downloads.
The goni display is now much more consistent across different frequencies and re-sample rates. Thanks to mwvdlee's view draw ideas, the new dual buffering system and resampling, CPU load is improved enough to run at 100fps for better latency.
Added new LED matrix'y thing for the second display to show Peak and (roughly) RMS power.
There's also a settings panel under the lid, so you can tweak parameters relevant to each display type.
Thanks again for all the help and inspiration.
aliasant ·
I hate to say this Trog but it looks quite glitchy on my system.
🙁
Ill see if its something on my side.
trogluddite ·
aliasant wrote: I hate to say this Trog but it looks quite glitchy on my system.
Bu**er! 😠
I may have tweaked a bit too close to the knife edge of my CPU performance. Couple of things might be worth trying...
Inside Curve Coords>>Buffer Size>>Frame Rate - you'll see that the frame rates there are actually set slower than 25fps and 100fps to allow for late triggers - reducing the frame rates here helps get rid of sparkles by extending the buffers. In fact the buffers can be any arbitrarily large size, only the new samples since the last frame are ever plotted.
Inside Curve Coords>>Dual Buffer>>Clock and Resample>>Mux - there are a couple of trigger delays to get everything happening in the right order. Increasing the delay may help avoid gaps in the waveform, but will increase latency.
Pretty sure that it's mostly down to windows/background tasks making the triggers late, I can force glitches by switching between windows, opening files etc. Weirdly though, although Tick25 actually gives me about 22fps, tick100 is more like 125fps!
aliasant ·
trogluddite wrote:
aliasant wrote: I hate to say this Trog but it looks quite glitchy on my system.
Bu**er! 😠
I may have tweaked a bit too close to the knife edge of my CPU performance. Couple of things might be worth trying...
Inside Curve Coords>>Buffer Size>>Frame Rate - you'll see that the frame rates there are actually set slower than 25fps and 100fps to allow for late triggers - reducing the frame rates here helps get rid of sparkles by extending the buffers. In fact the buffers can be any arbitrarily large size, only the new samples since the last frame are ever plotted.
Inside Curve Coords>>Dual Buffer>>Clock and Resample>>Mux - there are a couple of trigger delays to get everything happening in the right order. Increasing the delay may help avoid gaps in the waveform, but will increase latency.
Pretty sure that it's mostly down to windows/background tasks making the triggers late, I can force glitches by switching between windows, opening files etc. Weirdly though, although Tick25 actually gives me about 22fps, tick100 is more like 125fps!
Ok. Ill try to tweak it but my own, extremely simple Mono o Graph looks perfect except those occasional big sparks that can happen with n seconds gap and I too can force them by switching windows and such.
Weird about the triggers!??
On mine 25 is generally about 25 and 100 tick is about 70.
Edit:
Forgot to mention that I have tried different samplerates and latency/buffer sizes on the soundcard from 64 samples to 1024 and no real differences. All looks 99% good on my version and yors is equally glitchy 😊 😕
Ill try to tweak the Framerates and buffers now.
trogluddite ·
Done some more testing - even my little Atom powered Netbook runs it without glitches (only just; I have to keep the mouse still!) - I'll see if I can get my old P4 fired up and try it there.
Maybe I'm just lucky I stuck with nice minimal installs of WinXP 😕
aliasant ·
trogluddite wrote: Done some more testing - even my little Atom powered Netbook runs it without glitches (only just; I have to keep the mouse still!) - I'll see if I can get my old P4 fired up and try it there.
Maybe I'm just lucky I stuck with nice minimal installs of WinXP 😕
Nono.
Setting it to 15 instead of 40 ( 25 instead of 100 in the Cpanel) made all the difference " 🙂
100 looks crappy but 25 looks nice. Trying to see if there is any difference now to my simple version.
More people need to try his and report 🙂
LOL
I think I had one crashed SM still running in the back 😠
Had to force quit it from the Taskmanager.......
Now it runs fine on 100 as well. Virtually no cpu load either which is supernice 🙂
No sparks either. Pretty much perfect I guess 🙂
Dare I say FINALLY 🙂 ?
trogluddite ·
This little tool might help us...
...it just measures the actual frame rate of the triggers - boy, I must have been having a bad maths day, my tick100s are actually more like tick50 not 125!! 😊
EDIT - JUST SAW YOUR EDIT!!
That's great news 😀
Think you're right about getting some more test results though - we're both running pretty quick systems I guess. Sadly my old P4 is refusing to play - seems to be a dead PSU/MB. Shame, did all my SM 'growing up' on that old thing. 🙁
aliasant ·
trogluddite wrote: This little tool might help us...
...it just measures the actual frame rate of the triggers - boy, I must have been having a bad maths day, my tick100s are actually more like tick50 not 125!! 😊
😀 😀 😀 😀 😀
Glad Im not the only one screwing the ups 🙂
Wrote something here? To have a post removed or your name hidden, write to [email protected].