If you have a problem or need to report a bug please email : support@dsprobotics.com
There are 3 sections to this support area:
DOWNLOADS: access to product manuals, support files and drivers
HELP & INFORMATION: tutorials and example files for learning or finding pre-made modules for your projects
USER FORUMS: meet with other users and exchange ideas, you can also get help and assistance here
NEW REGISTRATIONS - please contact us if you wish to register on the forum
Users are reminded of the forum rules they sign up to which prohibits any activity that violates any laws including posting material covered by copyright
Vertical Bar/Line FFT/Spectrum Display- Feasible?
39 posts
• Page 1 of 4 • 1, 2, 3, 4
Vertical Bar/Line FFT/Spectrum Display- Feasible?
Not sure what will come of this but I'm just going to open the discussion.
Something approximately along the lines of this:
Would be wonderful to have in FS. I find it to be FAR more readable than the typical line-graph style FFT for most practical applications.
I've searched and could only dig up one example of this in the forums (including SM forums), here:
viewtopic.php?f=2&t=2446&hilit=fft
While that schematic appears functional, it devours CPU and drags down the draw rate, and only more so if you increase the window size.
Do you think something like this that's efficient enough and fairly accurate is feasible in FS? It's kind of frustrating that the line-graph style FFT is so easy to piece together in FS yet just drawing vertical lines from an FFT array is so much more complicated.
Something approximately along the lines of this:
Would be wonderful to have in FS. I find it to be FAR more readable than the typical line-graph style FFT for most practical applications.
I've searched and could only dig up one example of this in the forums (including SM forums), here:
viewtopic.php?f=2&t=2446&hilit=fft
While that schematic appears functional, it devours CPU and drags down the draw rate, and only more so if you increase the window size.
Do you think something like this that's efficient enough and fairly accurate is feasible in FS? It's kind of frustrating that the line-graph style FFT is so easy to piece together in FS yet just drawing vertical lines from an FFT array is so much more complicated.
- Perfect Human Interface
- Posts: 643
- Joined: Sun Mar 10, 2013 7:32 pm
Re: Vertical Bar/Line FFT/Spectrum Display- Feasible?
I've made one and now I added it to FS Guru
http://flowstone.guru/downloads/gradient-bar-graph/
note that there is a bug in flowstone, that when you resize the module gui, sometimes rectangles that should be directly adject to each other (based on their area position) have one pixel gap between them. I believe it has something to do with converting form grid scales to pixels when drawing gui elements.
http://flowstone.guru/downloads/gradient-bar-graph/
note that there is a bug in flowstone, that when you resize the module gui, sometimes rectangles that should be directly adject to each other (based on their area position) have one pixel gap between them. I believe it has something to do with converting form grid scales to pixels when drawing gui elements.
- KG_is_back
- Posts: 1196
- Joined: Tue Oct 22, 2013 5:43 pm
- Location: Slovakia
Re: Vertical Bar/Line FFT/Spectrum Display- Feasible?
Well dang... thanks KG!
Re: the bug, does it always seem to be 1 pixel even when you zoom in with Flowstone's zoom slider? I've noticed that kind of inaccuracy with drawn objects a lot in FS and it kind of drives me bonkers.
I will definitely check that out a little later!
Re: the bug, does it always seem to be 1 pixel even when you zoom in with Flowstone's zoom slider? I've noticed that kind of inaccuracy with drawn objects a lot in FS and it kind of drives me bonkers.
I will definitely check that out a little later!
- Perfect Human Interface
- Posts: 643
- Joined: Sun Mar 10, 2013 7:32 pm
Re: Vertical Bar/Line FFT/Spectrum Display- Feasible?
Perfect Human Interface wrote:Well dang... thanks KG!
Re: the bug, does it always seem to be 1 pixel even when you zoom in with Flowstone's zoom slider? I've noticed that kind of inaccuracy with drawn objects a lot in FS and it kind of drives me bonkers.
I will definitely check that out a little later!
You're welcome! I was looking to find such module some time ago too. I just recently learned ruby (and still learning) to a degree I was able to reproduce it.
And to the Bug. Yes, I have tested the thing with zooming too. It is one pixel no matter the zoom. Actually when I turn off smoothing it is gone. From what I can tell this is happening:
0.the background is drawn
1.Flowstone receives command to draw first rectangle
2.Converts his grid position to screen pixels (as float)
3.with "smoothing on" it uses the fractional part of the coordinates to interpolate the values on the borders (so the rectangle may have semitransparent one pixel border)
5.applies the rectangle to the background (background is basically a bitmap)
4.Flowstone receives command to draw second rectangle
5.Converts his grid position to screen pixels (as float)
6.with "smoothing on" it interpolates the fractional part and allows semi transparency
7.applies the rectangle to the background (remember the background already contains the first rectangle)
The semitransparent border of the first rectangle gets overlaid by semitransparent border of the second rectangle. Because both rectangles are semitransparent, the background still shines through.
So in the end is not actually a bug, but a normal behavior.
EDIT: I have noticed that the gap sometimes happens even if the smooting is off. It seems the rectangle areas are rounded differently
- Attachments
-
- smoothing causes the bug.fsm
- (442 Bytes) Downloaded 966 times
- KG_is_back
- Posts: 1196
- Joined: Tue Oct 22, 2013 5:43 pm
- Location: Slovakia
Re: Vertical Bar/Line FFT/Spectrum Display- Feasible?
KG_is_back wrote:So in the end is not actually a bug, but a normal behavior.
I think the next step would be to check whether rectangles drawn with smoothing still do that even when given exact pixel-unit parameters (in theory they shouldn't if it's proper interpolation). And grid-square dimensions are in exact pixels, aren't they? From what I recall I've seen this with just drawing rectangles into full grid-snapped views and then layering them- they bleed through on the edges.
- Perfect Human Interface
- Posts: 643
- Joined: Sun Mar 10, 2013 7:32 pm
Re: Vertical Bar/Line FFT/Spectrum Display- Feasible?
Perfect Human Interface wrote:And grid-square dimensions are in exact pixels, aren't they?
At zoom 100% they are. One grid square then corresponds to 8x8 pixels.
"There lies the dog buried" (German saying translated literally)
- tulamide
- Posts: 2714
- Joined: Sat Jun 21, 2014 2:48 pm
- Location: Germany
Re: Vertical Bar/Line FFT/Spectrum Display- Feasible?
Wow KG, this thing is pretty. I changed the multiplier value going into the bar graph module to 0.05 for better visibility. I did notice the scaling seems a bit odd though.
Even with the log scaling, the higher frequencies get a lot more space. Tried screwing with the math here but apparently don't know what I'm doing. Maybe it's a log base other than 10 on the PEQ2 meter?
Could alpha blending be added to the draw function easily? For example if I want it to blend between a full transparent and a solid color at max value?
One last thing: This would definitely benefit from a smoothed "release" for those transient sounds.
About time I open a book on Ruby I guess. I've been putting it off as long as possible.
Edit: Thinking the scale is log base 2, since that's what pitch is based on. How to apply log math to arrays though? I guess you'd just use Ruby for that too.
Even with the log scaling, the higher frequencies get a lot more space. Tried screwing with the math here but apparently don't know what I'm doing. Maybe it's a log base other than 10 on the PEQ2 meter?
Could alpha blending be added to the draw function easily? For example if I want it to blend between a full transparent and a solid color at max value?
One last thing: This would definitely benefit from a smoothed "release" for those transient sounds.
About time I open a book on Ruby I guess. I've been putting it off as long as possible.
Edit: Thinking the scale is log base 2, since that's what pitch is based on. How to apply log math to arrays though? I guess you'd just use Ruby for that too.
- Perfect Human Interface
- Posts: 643
- Joined: Sun Mar 10, 2013 7:32 pm
Re: Vertical Bar/Line FFT/Spectrum Display- Feasible?
Hey look at me! I added alpha all by myself!
It's only for the background (min) color though (the "max" color is doing something else I'm not sure of with the alpha). Still useful. I mean that was the more important part. I blopped a background image in there just for demonstration.
Edit: Figured out how to set/scale the bar (max) alpha, but it's pointless here since it's just drawn on top of the background color with alpha in the first place. You can just scale the input values and it would do the same thing.
It's only for the background (min) color though (the "max" color is doing something else I'm not sure of with the alpha). Still useful. I mean that was the more important part. I blopped a background image in there just for demonstration.
Edit: Figured out how to set/scale the bar (max) alpha, but it's pointless here since it's just drawn on top of the background color with alpha in the first place. You can just scale the input values and it would do the same thing.
- Attachments
-
- Gradient-Bar-Graph_Alpha1.fsm
- (309.78 KiB) Downloaded 1021 times
- Perfect Human Interface
- Posts: 643
- Joined: Sun Mar 10, 2013 7:32 pm
Re: Vertical Bar/Line FFT/Spectrum Display- Feasible?
And just for fun...
- Perfect Human Interface
- Posts: 643
- Joined: Sun Mar 10, 2013 7:32 pm
Re: Vertical Bar/Line FFT/Spectrum Display- Feasible?
Perfect Human Interface wrote:y look at me! I added alpha all by myself! It's only for the background (min) color though (the "max" color is doing something else I'm not sure of with the alpha). Still useful. I mean that was the more important part. I blopped a background image in there just for demonstration.Edit: Figured out how to set/scale the bar (max) alpha, but it's pointless here since it's just drawn on top of the background color with alpha in the first place. You can just scale the input values and it would do the same thing.
That gave me an idea. Look at new version at FSG http://flowstone.guru/downloads/gradient-bar-graph/#description
The old version first draws the background color and than draw the bar color gradients, where the y value sets alpha.
New version with transparency support does not draw background. Instead it uses y values to interpolate between back and foreground color.
I've kept the old version too, because it's lighter on CPU.
Also I've found what was causing the bug with those one pixel lines in the bar graph. It was the gradient - sometimes the gradient wrapped one pixel early. I've changed the wrapping mode, so now when it happens it is not even visible (it possibly can be, if you'd draw so much bars they'd be one pixel wide... but that's ridiculous).
- KG_is_back
- Posts: 1196
- Joined: Tue Oct 22, 2013 5:43 pm
- Location: Slovakia
39 posts
• Page 1 of 4 • 1, 2, 3, 4
Who is online
Users browsing this forum: No registered users and 71 guests