Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: foo_vis_spectrum_analyzer (Read 87651 times) previous topic - next topic
The Link and 1 Guest are viewing this topic.

Re: foo_vis_spectrum_analyzer

Reply #625
v0.7.5.0-beta2, 2024-03-31

* New: Peak Meter visualization.
* Improved: Edge cases for the scaling and position of the spectrum bars and curve vs. the X-axis.

While in beta testing you can only download it from GitHub.
There is a problem with the gap between the two sides of the Y-axis when resizing the visualization panel, check out the video below:
That's how it's supposed to react: The width of a bar adapts to the available space as an whole number; no more fractional bar widths and rounding errors.

When the available space becomes width enough through resizing or through disabling the Y-axis for a wider bar the graph re-calculates and occupies the available space.
I don't question the way you handle it, but the white space on both sides of the interface looks uncomfortable, especially when this visualization becomes part of the interface, meaning that I have to drag the window to a suitable width to avoid this problem , so I had to go back to 0.7.4.1, although it had some minor issues

Re: foo_vis_spectrum_analyzer

Reply #626
I don't question the way you handle it, but the white space on both sides of the interface looks uncomfortable, especially when this visualization becomes part of the interface, meaning that I have to drag the window to a suitable width to avoid this problem , so I had to go back to 0.7.4.1, although it had some minor issues
Your choice. But it stays this way. There's no such thing as a 'fractional' pixel. Just add more bars to fill the gap. Look at how foo_musical_spectrum handled the situation.

Re: foo_vis_spectrum_analyzer

Reply #627
The new version is looking great. Hopefully the disappearing artwork can be fixed soon. Also, despite the options the artwork (say like 500x500) does not fill the screen.  IE: There is always a border around it. I do not have this issue on other programs like Darkone's artwork panel or ESLyrics.

Re: foo_vis_spectrum_analyzer

Reply #628
The new version is looking great. Hopefully the disappearing artwork can be fixed soon. Also, despite the options the artwork (say like 500x500) does not fill the screen.  IE: There is always a border around it. I do not have this issue on other programs like Darkone's artwork panel or ESLyrics.
I had to make a choice: "Fit" means fit to the client area, that is the area used to render a curve or bars. Having the artwork appear behind the X or Y axis seemed messy to me.

Edit: about the artwork, it may seem trivial but due to some technical reasons it is a hard problem.

Re: foo_vis_spectrum_analyzer

Reply #629
- Spectrum: when playing 96/24 files and then bringing the popup - the art is there from the begining
@wojak ,

could you confirm the following observation, please:

- Starting the component in a popup window when a track WITH ARTWORK starts playing or is playing, renders the artwork from the start.
- Starting the component in a popup window when a track WITHOUT ARTWORK starts playing or is playing and then switch to a track WITH ARTWORK, does not render the artwork from the start.

Thx.

Re: foo_vis_spectrum_analyzer

Reply #630
If you're having problems with now_playing_album_art_notify_manager, do it the old fashioned way...

Code: [Select]
metadb_handle_ptr handle = // now playing handle
album_art_data_ptr data;

auto api = album_art_manager_v2::get();
auto guid = album_art_ids::cover_front;
auto handles = pfc::list_single_ref_t<metadb_handle_ptr>(handle);
auto guids = pfc::list_single_ref_t<GUID>(guid);

try
{
auto instance = api->open(handles, guids, fb2k::noAbort);
data = instance->query(guid, fb2k::noAbort);
}
catch (...) {}

if (data.is_valid())
{
// do something
}

Re: foo_vis_spectrum_analyzer

Reply #631
If you're having problems with now_playing_album_art_notify_manager, do it the old fashioned way...

Code: [Select]
metadb_handle_ptr handle = // now playing handle
album_art_data_ptr data;

auto api = album_art_manager_v2::get();
auto guid = album_art_ids::cover_front;
auto handles = pfc::list_single_ref_t<metadb_handle_ptr>(handle);
auto guids = pfc::list_single_ref_t<GUID>(guid);

try
{
auto instance = api->open(handles, guids, fb2k::noAbort);
data = instance->query(guid, fb2k::noAbort);
}
catch (...) {}

if (data.is_valid())
{
// do something
}

Can't. Getting the artwork is not thread safe. It has to occur in the UI thread so I have to rely on a complicated song-and-dance to coordinate the resource creation in the UI (for the configuration dialog) and the render thread.

Edit: But I think I cracked it. Running stress tests as I write this.

Re: foo_vis_spectrum_analyzer

Reply #632
v0.7.5.1, 2024-04-06

* Fixed: Peak Meter axes now behave as intended.
* Fixed: Sample rate initialization and Nyquist frequency marker display when the component is used in a popup window.
* Fixed: Disappearing artwork when the component is used in a popup window.

You can download it from the Component repository or from GitHub.


Re: foo_vis_spectrum_analyzer

Reply #634
Where should I address things regarding the PeakLED meter? In this thread or in the Peakmeter Spectrum component thread?


Re: foo_vis_spectrum_analyzer

Reply #636
Where should I address things regarding the PeakLED meter? In this thread or in the Peakmeter Spectrum component thread?
Here. It's part of this component.

Re: foo_vis_spectrum_analyzer

Reply #637
v0.7.5.1, 2024-04-06
RMS meter is not calibrated at all.
Says who?

RMS meter shows the same incorrect values as RMS meter embedded in Foobar.
Take a look at the screenshot: -20dBFS pink noise.
All the RMS meters should be calibrated according to IEC 61606:1997 / AES17-1998 standard - so called RMS+3.
And all the RMS meters on pro market are calibrated to AES-17 - no matter if it is ProTools, Sequoia, WaveLab, etc.


Re: foo_vis_spectrum_analyzer

Reply #638
RMS meter shows the same incorrect values as RMS meter embedded in Foobar.
Take a look at the screenshot: -20dBFS pink noise.
All the RMS meters should be calibrated according to IEC 61606:1997 / AES17-1998 standard - so called RMS+3.
And all the RMS meters on pro market are calibrated to AES-17 - no matter if it is ProTools, Sequoia, WaveLab, etc.
Well, it is an eye candy component, not a scientific instrument. But I'll make an effort.

Re: foo_vis_spectrum_analyzer

Reply #639
RMS meter shows the same incorrect values as RMS meter embedded in Foobar.
Take a look at the screenshot: -20dBFS pink noise.
All the RMS meters should be calibrated according to IEC 61606:1997 / AES17-1998 standard - so called RMS+3.
And all the RMS meters on pro market are calibrated to AES-17 - no matter if it is ProTools, Sequoia, WaveLab, etc.
Well, it is an eye candy component, not a scientific instrument. But I'll make an effort.
It would be great!

Re: foo_vis_spectrum_analyzer

Reply #640
I stuck with  layout setting. Axis lines overlap bands 🙄 I would like to keep axis lines ON without overlapping bands, is there a way to do it? A tick option? I couldn't find a way 🤔🤔

Re: foo_vis_spectrum_analyzer

Reply #641
RMS meter shows the same incorrect values as RMS meter embedded in Foobar.
Take a look at the screenshot: -20dBFS pink noise.
All the RMS meters should be calibrated according to IEC 61606:1997 / AES17-1998 standard - so called RMS+3.
And all the RMS meters on pro market are calibrated to AES-17 - no matter if it is ProTools, Sequoia, WaveLab, etc.
Well, it is an eye candy component, not a scientific instrument. But I'll make an effort.
It would be great!
@misio ,

Better? I read this but had trouble determining Amax. Experimentally using a 96kbps 997 Hz sine wave I determined it to be 0.28117.

Re: foo_vis_spectrum_analyzer

Reply #642
I stuck with  layout setting. Axis lines overlap bands 🙄 I would like to keep axis lines ON without overlapping bands, is there a way to do it? A tick option? I couldn't find a way 🤔🤔

@cosh,

That's by design. The code tries to center the vertical graph line within a bar.

Re: foo_vis_spectrum_analyzer

Reply #643
I stuck with  layout setting. Axis lines overlap bands 🙄 I would like to keep axis lines ON without overlapping bands, is there a way to do it? A tick option? I couldn't find a way 🤔🤔
I just went to Styles/Horizontal(Vertical) Grid Line and played with both Opacity and Color until they still appear faintly against the graph background but are no longer discernible in the bars themselves--clean again!  It looks like you are using LED so I don't know if that will work for you or not.



Other:  I went from 0740 to 0751 via Foobar update and found a couple of other things I needed to change, one was changing my Spectrum Smoothing from Peak/.7 to Average/.3 to get a visual equivalent in bar movement.  A nice find was that now when the display window is horizontally resized the X-axis frequencies are re-adjusted to keep the correct numerical value.  Didn't even realize this was not occuring in 0740.  A lot more than just "eye candy" going on, thanks pqyt.

P.S.  people also using the spectrum with Foobar 1.6.17 will find that 0751 works well there too, but do not attempt to import a preset made for it into a 0751 install on v.2.2 x64, the settings will NOT carry over!

Re: foo_vis_spectrum_analyzer

Reply #644
P.S.  people also using the spectrum with Foobar 1.6.17 will find that 0751 works well there too, but do not attempt to import a preset made for it into a 0751 install on v.2.2 x64, the settings will NOT carry over!
32-bit fb2k's can exchange presets. The same for 64-bit. But no cross-sharing.

Re: foo_vis_spectrum_analyzer

Reply #645
Hi, 
everything works fine now (Nyquist and art). Thank you.

I got into trouble trying to use your componet like that:
-using DUI and making horizontal peak meter as part of layout ("embedded") and occasionally trying to bring the Spectrum as a popup is not possible. When asking to enable the Spectrum, the Peakmeter flashes to inform me thet I already run this plugin. I use many colours in Spectrum but only black and white in Peakmeter. To overcome the inability to popup Spectrum when Peakmeter is embedded in the layout I thought that I would change the functionality by right clicking on the Peakmeter when needed and switch to Spectrum and doubleclick to make it fullscreen (because Peakmeter window is wide and flat) but when switching to Spectrum the Spectrum shows as black and white (just like Peakmeter) desptie it being set to use many colours. This only happens when the plugin is set as embedded and changed between functions. It works OK when not embedded and being just popped-up (the spectrum is in colour and Perakmeter in BW) then). Plus making this now BW Spectrum fullscreen switches it to be Peakmeter.
To sum it up: I set Peakmeter to be embedded in DUI then during playback click to change it to be Spectrum for a moment. The spectrum has wrong colors and when it is doublecliked to make it fullscreen it swithces to fullscreen Peakmeter.

Additions feature requests:
- Peak meter ceiling above 0dB (if not possible to make it independent, that option could be a feature for all parts of your plugin as well)
- independent options for steps, ceilings and displayed digits on the axis (I can't make it only left and bottom for Peakmeter and have all four sides on for Spectrum).

Re: foo_vis_spectrum_analyzer

Reply #646
I got into trouble trying to use your componet like that:
To sum it up: I set Peakmeter to be embedded in DUI then during playback click to change it to be Spectrum for a moment. The spectrum has wrong colors and when it is doublecliked to make it fullscreen it swithces to fullscreen Peakmeter.
That will not work. In DUI a fullscreen view is another instance of the same component with it's own settings. You can verify this by alt-tabbing to the main player window and moving it to another monitor. You'll see there are 2 components running. That's how the fb2k SDK works.

CUI works differently. It does not AFAIK have a way to switch to fullscreen so I wrote my own by re-using the window of the component. That's why in CUI there is only one instance and one config.
- Peak meter ceiling above 0dB (if not possible to make it independent, that option could be a feature for all parts of your plugin as well)
Working on it while I try to add calibration.
- independent options for steps, ceilings and displayed digits on the axis (I can't make it only left and bottom for Peakmeter and have all four sides on for Spectrum).
Yes, you can if you use a separate component instance for peak meter and spectrum. That's how it was designed. My test setup has 3 instances: a spectrum and a horizontal and vertical peak meters each with their own settings.

Re: foo_vis_spectrum_analyzer

Reply #647
That will not work. In DUI a fullscreen view is another instance of the same component with it's own settings. You can verify this by alt-tabbing to the main player window and moving it to another monitor. You'll see there are 2 components running. That's how the fb2k SDK works.
That's exactly how it is for all visualizations (not just this component and Enhanced Spectrum analyzer obviously) with fullscreen support, including foobar2000's built-in visualizations, so for anyone who throwing complaints at fullscreen mode being different, please read this!

Re: foo_vis_spectrum_analyzer

Reply #648
I got into trouble trying to use your componet like that:
To sum it up: I set Peakmeter to be embedded in DUI then during playback click to change it to be Spectrum for a moment. The spectrum has wrong colors and when it is doublecliked to make it fullscreen it swithces to fullscreen Peakmeter.
That will not work. In DUI a fullscreen view is another instance of the same component with it's own settings. You can verify this by alt-tabbing to the main player window and moving it to another monitor. You'll see there are 2 components running. That's how the fb2k SDK works.

CUI works differently. It does not AFAIK have a way to switch to fullscreen so I wrote my own by re-using the window of the component. That's why in CUI there is only one instance and one config.
- Peak meter ceiling above 0dB (if not possible to make it independent, that option could be a feature for all parts of your plugin as well)
Working on it while I try to add calibration.
- independent options for steps, ceilings and displayed digits on the axis (I can't make it only left and bottom for Peakmeter and have all four sides on for Spectrum).
Yes, you can if you use a separate component instance for peak meter and spectrum. That's how it was designed. My test setup has 3 instances: a spectrum and a horizontal and vertical peak meters each with their own settings.

But how do I open two instance of the same component either both as popups or one as popup and one embedded in DUI? Or is it only possible to enable two embedded?

Re: foo_vis_spectrum_analyzer

Reply #649
I got into trouble trying to use your componet like that:
To sum it up: I set Peakmeter to be embedded in DUI then during playback click to change it to be Spectrum for a moment. The spectrum has wrong colors and when it is doublecliked to make it fullscreen it swithces to fullscreen Peakmeter.
That will not work. In DUI a fullscreen view is another instance of the same component with it's own settings. You can verify this by alt-tabbing to the main player window and moving it to another monitor. You'll see there are 2 components running. That's how the fb2k SDK works.

CUI works differently. It does not AFAIK have a way to switch to fullscreen so I wrote my own by re-using the window of the component. That's why in CUI there is only one instance and one config.
- Peak meter ceiling above 0dB (if not possible to make it independent, that option could be a feature for all parts of your plugin as well)
Working on it while I try to add calibration.
- independent options for steps, ceilings and displayed digits on the axis (I can't make it only left and bottom for Peakmeter and have all four sides on for Spectrum).
Yes, you can if you use a separate component instance for peak meter and spectrum. That's how it was designed. My test setup has 3 instances: a spectrum and a horizontal and vertical peak meters each with their own settings.

But how do I open two instance of the same component either both as popups or one as popup and one embedded in DUI? Or is it only possible to enable two embedded?
I don't think you can using only the standard DUI. Maybe foo_flowin can help?