Author Topic: CoolEdit Nostalgia visualizer  (Read 35003 times)

kamen

  • Jr. Member
  • **
  • Posts: 105
Hi, I would like to ask if there is a possibility of using this plugin in the Now Playing panel in the future?

If this possibility exists and it is my stupidity, disregard this question.
Thanks for the great job
You can use it now in Now Playing in floating panel mode--resize the panel to your needs.  A bit messy but you can position it more-or-less out of the way/in harmony with the rest of the interface.

It wasn't quite what I imagined, as I wanted the plugin to appear only in the Playing Now panel. I try to use more "clean" layouts like this (https://getmusicbee.com/forum/index.php?topic=41502.0) and this plugin would be a wonderful addition to that panel.
But that's ok, it's a great job
Thanks

NowPlaying is using different layouting system, that is not extensible for me.
In addition to what sveakul proposed - before selecting the NowPlaying you can also add the docked version into the top or the bottom panel. It will remain visible when NowPlaying is selected, but it won't integrate any better than that...

sveakul

  • Hero Member
  • *****
  • Posts: 3275
I'll comment on what's possible in the VU-Meter thread.
Where IS the "VU-Meter thread?"

kamen

  • Jr. Member
  • **
  • Posts: 105
Quote
Don't forget that underlying IIR filter can be cascaded for steeper leakage rolloff on filter bank analyzer at the cost of temporal resolution becoming blurry

BTW, IIR filter bank doesn't have to be logarithmically spaced and in fact, it can have something like Mel frequency scaling on the filter bank analyzer (the frequency scaling option should be independent on transform algorithm option) as in this CodePen project, where bandwidth or Q factor of each filter is automatically determined by differences between minimum and maximum frequency boundaries for each band, which optimizes the time/frequency resolution tradeoff for the given frequency scaling options

Thanks for those, TF3RDL. I did "cut off" the cascaded processing (tha "order", if i get you right), because of the blurry thing and mainly due to the processing overhead.
As for the freqency bands, I use differently spaced ones (apart from the logarithmic), especially in note scale mode, which is exponential, and it confirmed what you say. Otherwise the most important for me was the time resolution, where the q factor and other settings played lesser role, maybe because I use tightly spaced frequency bands.

Quote
BTW for curiosity, would the combined (M = (L+R)/2) channel not display if you play an audio file that is completely out-of-phase (in other words, it is a stereo .wav or .flac file where the second channel is exactly the same as the first but with inverted polarity)?
I prefer to look at the amplitude as a positive scale, which then cannot be negated.

Quote
would using a Winamp DSP just for providing sample data for non-FFT spectrum visualizations (and time-domain based audio analysis like LUFS meters and vectorscope) change the audio so that it clips when the input audio goes above 0dBFS since like FLAC, Winamp DSP plugin system doesn't support floating-point input/output iirc?
The winamp interface gives you 16bit samples, but did not test with a signal beyound 0db. From the calibration that I did, I think the above 0db part is also included.

kamen

  • Jr. Member
  • **
  • Posts: 105
I'll comment on what's possible in the VU-Meter thread.
Where IS the "VU-Meter thread?"
Here it is, for those who are interested.
Last Edit: August 05, 2024, 10:57:03 PM by kamen

sveakul

  • Hero Member
  • *****
  • Posts: 3275
I'll comment on what's possible in the VU-Meter thread.
Where IS the "VU-Meter thread?"
Here it is, for those who are interested.
Ah, OK!  Since the subject is being actively discussed now it deserves to be its own "New Topic" under the Visualisers child board, not an over-entended "Wishlist" entry.  Kamen (or hiccup) I would urge you to create that New Topic name and I hope it takes off this time, it was almost there too!  It would be great to have this.

TF3RDL

  • Jr. Member
  • **
  • Posts: 47
Quote
Don't forget that underlying IIR filter can be cascaded for steeper leakage rolloff on filter bank analyzer at the cost of temporal resolution becoming blurry

BTW, IIR filter bank doesn't have to be logarithmically spaced and in fact, it can have something like Mel frequency scaling on the filter bank analyzer (the frequency scaling option should be independent on transform algorithm option) as in this CodePen project, where bandwidth or Q factor of each filter is automatically determined by differences between minimum and maximum frequency boundaries for each band, which optimizes the time/frequency resolution tradeoff for the given frequency scaling options

Thanks for those, TF3RDL. I did "cut off" the cascaded processing (tha "order", if i get you right), because of the blurry thing and mainly due to the processing overhead.
As for the freqency bands, I use differently spaced ones (apart from the logarithmic), especially in note scale mode, which is exponential, and it confirmed what you say. Otherwise the most important for me was the time resolution, where the q factor and other settings played lesser role, maybe because I use tightly spaced frequency bands.
The performance penalty of cascading IIR filters made me think about whether or not using the AVX2 instruction set worth it for another plugin (foo_enhanced_spectrum_analyzer) for another player (foobar2000), just for IIR filter bank (especially when cascaded) and averaging calculation?

BTW, speaking of the project in question, I've updated this to add infinite average (cumulative) spectrum as well as Bark scale labels and grid

Quote
BTW for curiosity, would the combined (M = (L+R)/2) channel not display if you play an audio file that is completely out-of-phase (in other words, it is a stereo .wav or .flac file where the second channel is exactly the same as the first but with inverted polarity)?
I prefer to look at the amplitude as a positive scale, which then cannot be negated.
True as magnitude FFT can't be negative because hypot(re(x), im(x)) and abs(complexNumber) only produces positive numbers anyway. But what I meant is that the combined channel (L+R) should be muted if you put out-of-phase audio files like this one

Quote
would using a Winamp DSP just for providing sample data for non-FFT spectrum visualizations (and time-domain based audio analysis like LUFS meters and vectorscope) change the audio so that it clips when the input audio goes above 0dBFS since like FLAC, Winamp DSP plugin system doesn't support floating-point input/output iirc?
The winamp interface gives you 16bit samples, but did not test with a signal beyound 0db. From the calibration that I did, I think the above 0db part is also included.
So what happen if you play this sample that contains +0dBFS parts? Did the audio gets clipped when you put the Winamp DSP required for IIR filter bank mode for CEN on, rather than being limited by CAudioLimiter shenanigan (when a program like foobar2000 outputs audio more than 0dBFS loud)?

TF3RDL

  • Jr. Member
  • **
  • Posts: 47
Good observation. Spectrolizer places the whole spectrum on a circle. In fact the original output was more of upward parabola in my case, so I had to straighten it a bit, so that it matches better the FFT.
Linear spectrum (like foobar2000 spectrum analyzer components like foo_enhanced_spectrum_analyzer and foo_musical_spectrum) do already exist in Spectrolizer and there is even a dB analyzer mode for Spectrolizer, which makes it more of apple-to-apple comparison with CoolEdit Nostalgia (plugin for MusicBee) and Enhanced Spectrum analyzer (component for foobar2000)

kamen

  • Jr. Member
  • **
  • Posts: 105
For good or bad, version 4.5 is here!
(approval should come soon)

Many of the wishes are already in it:
- bar width change
- LED size change
- text size change (through options or mouse wheel)
- many small changes to the logarithmic scale
- and so on...

The biggest thing by far is the IIR frequency band transformation, which I presented earlier here.


The screenshot shows the docked and floating plugin versions working in parallel - one using the FFT(above) and the other the IIR(below).

To select which version uses which algorithm, go to the DSP settings and select the corresponding dsp_nostalgia.dll or dsp_nostalgia_floating.dll plugins. (No need to import the plugins)


The higher on the list is the "Analog Style" entry, you'll be able to pick the audio output from the DSP plugins below it.
Due to the DSP limitations, the IIR algorithm works on a 22.050Hz scale, nomatter what the audio file is.
Other than that it is good to use 60fps for best results.

Generally speaking the more you zoom (or enlarge) the scale with the IIR, the more detailed and interesting it gets.

As always with CEN, the dsp plugins are removable files and if you don't need the IIR, can just remove the files that you don't need.

Thanks for the ideas and wishes brought from you to this version!

kamen

  • Jr. Member
  • **
  • Posts: 105
About the details around the DSP plugin... I'm still making my baby steps there.

Quote
The performance penalty of cascading IIR filters made me think about whether or not using the AVX2 instruction set worth it for another plugin (foo_enhanced_spectrum_analyzer) for another player (foobar2000), just for IIR filter bank (especially when cascaded) and averaging calculation?

BTW, speaking of the project in question, I've updated this to add infinite average (cumulative) spectrum as well as Bark scale labels and grid
Yes, I use SSE optimizations in version 4.5. Maybe AVX2 is better, but not everybody has it, and the performance isn't worth the compatibility.

Quote
True as magnitude FFT can't be negative because hypot(re(x), im(x)) and abs(complexNumber) only produces positive numbers anyway. But what I meant is that the combined channel (L+R) should be muted if you put out-of-phase audio files like this one
The current state (as expected): the channels do not nullify themselves. The "combination" has to occur as samples and then be FFT-ed.

Quote
So what happen if you play this sample that contains +0dBFS parts? Did the audio gets clipped when you put the Winamp DSP required for IIR filter bank mode for CEN on, rather than being limited by CAudioLimiter shenanigan (when a program like foobar2000 outputs audio more than 0dBFS loud)?
The signal gets clipped. Not a problem with the mass produced songs up to now. The other option might be to expand the scale up to +12db if it must be.

TF3RDL

  • Jr. Member
  • **
  • Posts: 47
Quote
So what happen if you play this sample that contains +0dBFS parts? Did the audio gets clipped when you put the Winamp DSP required for IIR filter bank mode for CEN on, rather than being limited by CAudioLimiter shenanigan (when a program like foobar2000 outputs audio more than 0dBFS loud)?
The signal gets clipped. Not a problem with the mass produced songs up to now. The other option might be to expand the scale up to +12db if it must be.
True. But when you put a float32 WAVs (e.g. coming from bass boosted exports of any audio file including MP3 and other lossy sources, which contains +0dBFS peaks when decoded even before processing) while these Winamp DSPs aren't enabled, the output are limited rather than clipped/distorted right?
Last Edit: August 14, 2024, 12:14:39 AM by TF3RDL

sveakul

  • Hero Member
  • *****
  • Posts: 3275
@kamen:  thanks for the 4.5 version!  I haven't really started testing, but noticed an error at the get-go:

Environment: all 4 dll's (not the D2D ones) extracted into Plugins, past *.ini files deleted from Appdata.  Floating Window choice kept in the MB Panel Settings.

Problem:  when opening MusicBee and starting a stream with no adjustments made to the CEN settings, exiting MB while the stream is playing produces the following pop-up error message:

MusicBee v3.6.8989.38477P  (Win10.0), 14 Aug 2024 1:23:

System.ArgumentException: Parameter is not valid.
   at System.Drawing.Image.get_Width()
   at System.Drawing.Image.get_Size()
   at System.Windows.Forms.PictureBox.ImageRectangleFromSizeMode(PictureBoxSizeMode mode)
   at System.Windows.Forms.PictureBox.OnPaint(PaintEventArgs pe)
   at MusicBeePlugin.ImageBoxMod.OnPaint(PaintEventArgs paintEventArgs)
   at System.Windows.Forms.Control.PaintTransparentBackground(PaintEventArgs e, Rectangle rectangle, Region transparentRegion)
   at System.Windows.Forms.Control.PaintBackground(PaintEventArgs e, Rectangle rectangle, Color backColor, Point scrollOffset)
   at System.Windows.Forms.Control.PaintBackground(PaintEventArgs e, Rectangle rectangle)
   at System.Windows.Forms.Control.OnPaintBackground(PaintEventArgs pevent)
   at System.Windows.Forms.ScrollableControl.OnPaintBackground(PaintEventArgs e)
   at MusicBeePlugin.PanelModGDI.OnPaintBackground(PaintEventArgs pevent)
   at System.Windows.Forms.Control.PaintWithErrorHandling(PaintEventArgs e, Int16 layer)
   at System.Windows.Forms.Control.WmPaint(Message& m)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

The floating window stays in the background with a white field and a red "X" across the window until the error message is acknowledged.

Exiting MusicBee before playing anything, or after hitting "Stop" first, does not produce the error pop-up and the CEN window closes with MB.

boroda

  • Hero Member
  • *****
  • Posts: 5226
not a bug issue, but it's rather annoying to me. i've docked the visualizer at the bottom panel of MB window. when MB starts, this panel is filled by MB skin background color, then the panel is filled by black color for a second (this is the issue), and then by plugin background color. is it possible to skip drawing black panel?


sveakul

  • Hero Member
  • *****
  • Posts: 3275
Is anyone else trying version 4.5 of this visualizer and having problems?  The off-putting error message-on-exit thing I reported earlier made me go back to 4.0, and it's a shame to have to miss out on the new features because of it.  Kamen, have you taken a look at this yet?  I tried to put in full "here's what I did and here's what happened" but if you need more info let me know.  Thanks!

boroda

  • Hero Member
  • *****
  • Posts: 5226
@sveakul, i don't see any error messages on closing MB (and any error messages at all, plugin version 4.5).

sveakul

  • Hero Member
  • *****
  • Posts: 3275
Boroda please try this environment

1. All 4 dll's EXCEPT the two  D2D ones added to Plugins, floating window version selected and added in MB, previous CEN themes in AppData deleted

2.  Open MB and start playing a radio stream--CEN will be active

3. While the stream is playing, exit MB

4.  Is the error message produced?

Thanks!  I am using MB 3.6.8989, Windows 11 x64