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: Waveform Minibar (mod) (Read 117377 times) previous topic - next topic
0 Members and 2 Guests are viewing this topic.

Re: Waveform Minibar (mod)

Reply #400
Super low priority request but it would be cool if tooltips were light/dark depending on UI settings.
I hadn't even realized the tooltips didn't support dark more until your request. I see you create custom tooltips manually in JScript, those look a bit different than the OS native ones. Minibar will get dark tooltips when foobar2000 adds support for them. At the moment neither Default UI nor Columns UI has them. In my opinion it is best for the entire UI to use the same style and avoid creating custom workarounds in individual components.

Couldn't the Waveform Minibar component use the data from full file buffering if this is active?
All file access depends on foobar2000 behavior. I have forwarded the enhancement request to Peter.

Re: Waveform Minibar (mod)

Reply #401
My tooltips are OS native. It might look different because I use a slightly larger font size by default. Users can also specify any font they want.

I use SetWindowTheme whenever dark mode is toggled like this...

Code: [Select]
SetWindowTheme(m_tooltip, m_is_dark ? L"DarkMode_Explorer" : nullptr, nullptr);


Re: Waveform Minibar (mod)

Reply #402
Thanks marc2k3. I didn't expect tooltip darkening to be that simple.
Released version 1.2.55 with dark mode aware tooltips. I still believe entire UI should have the same looks so I broke my own principle.

Re: Waveform Minibar (mod)

Reply #403
Thanks for the updated component.

One minor niggle though. I noticed it doesn't support dark mode tooltips when using Columns UI on fb2k 1.6.x. There is a method in the CUI SDK...

https://columns-ui-sdk.readthedocs.io/en/latest/appearance/colours.html#_CPPv4NK3cui7colours6helper19is_dark_mode_activeEv

edit: I have a dev related question for you. I noticed your colour preferences can detect which UI is active and get the colours. I can get colours from within DUI elements/CUI panels but I'm curious as to how you do it from the preferences.

Re: Waveform Minibar (mod)

Reply #404
I am confused. I use the foobar2000 Core Dark Mode stuff to detect dark mode as both Default UI and Columns UI should be in sync with the mode. I believe that is also how Preferences window knows to be in dark vs light mode. It works here exactly as it is supposed to.

My preferences color code handling can probably be considered cheating. I copy colors from the UI element's/panel's color update function to a global structure.

Re: Waveform Minibar (mod)

Reply #405
CUI supports its own dark mode on fb2k 1.6.x but it does not integrate with fb2k core dark mode because it's obviously not present pre 2.0.  That's why I posted a link the CUI SDK method which is completely independent of fb2k native dark mode support.

It's probably a bit niche to consider so you can forget it if you like. I only implementeed it because CUI dark mode was public way before fb2k 2.0 was released to the great unwashed like me.

Re: Waveform Minibar (mod)

Reply #406
First of all thanks for making this, it's been really useful for me.

I wonder if there is some way to zoom in on the waveform? I primarily use it for listening to speech, and often need to pause between utterances. If the file is too long then the waveform is too cramped up to be useful for seeing when there is about to be a pause, without being zoomed in.

Re: Waveform Minibar (mod)

Reply #407
I wonder if there is some way to zoom in on the waveform?
What you see is all there is, a "digest" of the track dynamics as however-many samples taken over whatever the length of the track is.  That digest is stored in a database so that it doesn't have to be re-generated each time.

I think you need to use something else, such as Audacity.  With that, you can load a track and play it, and display the waveform in whatever detail you wish.
It's your privilege to disagree, but that doesn't make you right and me wrong.

Re: Waveform Minibar (mod)

Reply #408
I love this mod, but I notice that when I'm using ASIO, the playback indicator on the waveform is choppy, sometimes pausing before starting.  Is this the ASIO or the mod, or both?  I tried changing to various buffer settings in output, but it didn't seem to help.  Thanks for any advice.

Re: Waveform Minibar (mod)

Reply #409
The progress should be quite smooth but as it's not tied to the monitor's vertical sync it's not 100% perfect.
But if it works worse with ASIO than using other output methods, your ASIO implementation has some weird latency reporting. Are you using the official ASIO output by Peter? Not sure if ASIO drivers can affect that but just curious, which audio device and drivers are these?

Re: Waveform Minibar (mod)

Reply #410
Please i really really hope for a option to disable the seekbar tooltip!

Re: Waveform Minibar (mod)

Reply #411
Hi Case!
Thank you for a very useful Waveform Minibar (mod) component for the Foobar2000 player.
I found a problem with high CPU usage (see attached image). The problem can be reproduced when the component is set to "Track to prefer when showing waveform->Selected track" and "Scanned waveforms to store in database: Store nothing" and I hold down the arrow down (or arrow up or PageDown or PageUp) key in the playlist for a few seconds to scroll through the list of tracks.
Maybe the solution of this problem is to set (optionally in the component settings) a time interval: if during this interval another track in the playlist is not selected, then processing by the Waveform Minibar (mod) component begins.

I use foobar2000 v1.5.11, Waveform Minibar (mod) v1.2.53 (Last for Windows XP)

Re: Waveform Minibar (mod)

Reply #412
The problem can be reproduced when the component is set to "Track to prefer when showing waveform->Selected track" and "Scanned waveforms to store in database: Store nothing"
The solution to your problem is to allow it to cache waveforms, so it doesn't have to scan each track you touch every time you touch them!
It's your privilege to disagree, but that doesn't make you right and me wrong.

Re: Waveform Minibar (mod)

Reply #413
The problem can be reproduced when the component is set to "Track to prefer when showing waveform->Selected track" and "Scanned waveforms to store in database: Store nothing"
The solution to your problem is to allow it to cache waveforms, so it doesn't have to scan each track you touch every time you touch them!
Hello, fooball.
I'm sorry but this is not good solution. You propose to use the component in your own way (by saving waveforms in the component's database) and do not assume that others are using it differently (without saving). But even if you enable saving, the problem remains. If the tracks in the playlist have not been processed previously and saved to the component database, then the load on the central processor is just as high (see attached image).

I also note that this problem exists on a powerful computer (Intel i5 with 3.4GHz, 16Gb RAM, SAMSUNG EVO SSD 2TB), and on a weak PC (acer one ZG5 netbook) the problem is worse (even playback is interrupted, so you have to turn off the component when searching for a song)

Re: Waveform Minibar (mod)

Reply #414
You have to pay the piper.  If you want to use the waveform bar, then you have to allow that the CPU will be required to create it.  The point of the cache is not to have to do that every time, so if you don't want to use the cache be prepared for a heavy processor load - simple as that.  Your choice.

My choice is to sync the database once, in slow time, then it's only new tracks which need to be added when first encountered.

You're right, you can use it your way if you want, but there is that compromise.
It's your privilege to disagree, but that doesn't make you right and me wrong.

Re: Waveform Minibar (mod)

Reply #415
when ever i add new music i select it and right click for generate missing waveform data and this way i have the waveforms for every song and never have any lag I think everyone should just do this unless they for some reason dont have more storage
PC - Teac UD-505 - Adam Audio A4V - DCA ÆON Open X
Samsung S23 Ultra 512GB - Fiio UTWS5 - TinHifi P1 Max.

Re: Waveform Minibar (mod)

Reply #416
I think everyone should just do this unless they for some reason dont have more storage
The cache doesn't take much storage, compared with the file size of the tracks!  My library contains 5,500 tracks which occupy something like 54GB, but the size of my minibar.db is a mere 180MB, ie 0.3%.

It's not that everyone should do this, it's their choice, but if they don't there's no point complaining about how long it takes or how much CPU load there is when generating the waveforms live.
It's your privilege to disagree, but that doesn't make you right and me wrong.

Re: Waveform Minibar (mod)

Reply #417
@TOPMuk
Back when designing the original waveform seekbar (and minibar) component there has been the assumption that consuming some CPU in low priority worker threads is fine. The expectation there is that at least two cores on the system so that the background analysis can be performed with little impact on the interactive use of the system.

If live scanning isn't acceptable, there's indeed the option of scanning tracks intentionally ahead of time which is intended for that kind of purpose. In the original seekbar it was possible to tune the number of background threads, but that option seems to not be available in minibar as it's a simpler tool.

Design-wise for a workaround, one could do something like a delay before a scan job is pushed on to the queue on highlight, but that also means that it needs to be optional as intentionally delaying previews would hurt most users. As the component is supposed to not have a lot of knobs, I'm not sure if Case is keen on doing anything like that.
I don't think that adding such a feature would help you anyway as you're stuck on an older version as you're on a discontinued OS.

It's hard to judge what the actual impact is on your big machine is, as the i5 series has existed since 2010 and without knowing roughly which generation it is there is a huge span of possible processors with significantly varying performance.
One should also remember that using CPU cycles is typically not a problem if it is low enough priority - OSes are built to schedule work and ultimately, you need to compute what you need to compute.

It's unfortunate that the netbook is not powerful enough to play music while decoding a track at maximum speed in the background, but there's not much room design-wise to do anything else there. If paths are the same you could copy the database from a machine where you've pregenerated waveforms or generate some for your whole library overnight.
Stay sane, exile.

Re: Waveform Minibar (mod)

Reply #418
It doesn't take much storage, compared with the file size of the tracks!
Amusingly enough, one of the problems I faced with the original components and a reason why I made the effort to compress waveforms was that it could take noticeable space as for a system installation the foobar2000 profile is located in the user's roaming profile.
When you start taking up gigabytes there, it can get impractical. :D
Stay sane, exile.

Re: Waveform Minibar (mod)

Reply #419
I use netbooks running Win7 pre-SP1, with a SSD and a portable FB2K 1.16 (so my profile stuff is where I choose rather than where the OS decides).  Works fine for me, even better with a cache.
It's your privilege to disagree, but that doesn't make you right and me wrong.

Re: Waveform Minibar (mod)

Reply #420
Case,
Thank you for an excellent plugin.
I'm wondering if you might consider adding an integration with another of your other indispensible plugins, foo_skip.

A right click on the waveform might have the options to:
set SKIP in point
set SKIP out point
and then automatically write those tags to the file.

Additionally, if SKIP tags are found with a file's metadata, perhaps some sort of marker or visual indicator could be shown on the waveform.

Thanks for considering this request.
Cheers.

Re: Waveform Minibar (mod)

Reply #421
Hi, I spent several hours just to ENABLE Waveform minibar. Why foobar is so user-friendly (not)? Any docs, or FAQ in first post (of this (or every) plugin)?

And waveform is different from waveform in audio-editors. I don't know is it a good or not. Firstly, its vertical scale is lower than 100%, secondly, it's maybe smoothed. Maybe, it's easier to seek, but it's not exact waveform. I don't know.
The most of the modern tracks are clipped at 100%, and remain look like clipped (but not at 100%) when zoomed out by y axis, but the Waveform Minibar displays them smooth and as if not clipped.

Re: Waveform Minibar (mod)

Reply #422
Hi, I spent several hours just to ENABLE Waveform minibar. Why foobar is so user-friendly (not)? Any docs, or FAQ in first post (of this (or every) plugin)?
It's free.  People put in their effort for free.  Tell you what, if you think you can improve the documentation then by all means join the team and contribute.  A user forum is (effectively) an alternative to maintaining documentation – beginners ask questions, experienced users help them out.

I don't recall having any particular problem adding the waveform minibar to my screen layout, once I understood the general method.  Look back through my early posts on this forum – you'll see what help I needed... but yes, I was fiddling around for several hours (or more) to get *my personal* user interface the way I wanted it.  What other player offers that flexibility?

Quote
And waveform is different from waveform in audio-editors. I don't know is it a good or not. Firstly, its vertical scale is lower than 100%, secondly, it's maybe smoothed. Maybe, it's easier to seek, but it's not exact waveform. I don't know.
The most of the modern tracks are clipped at 100%, and remain look like clipped (but not at 100%) when zoomed out by y axis, but the Waveform Minibar displays them smooth and as if not clipped.
It's not meant to be an oscilloscope view, it just gives an impression of the track dynamics.
It's your privilege to disagree, but that doesn't make you right and me wrong.

Re: Waveform Minibar (mod)

Reply #423
@meg

as always the best things are rarely the easiest. it just takes some learning to learn how to use Foobar and that its endlessly customizable, which is why we use it.

have you tried the different options for the waveform displaying?
PC - Teac UD-505 - Adam Audio A4V - DCA ÆON Open X
Samsung S23 Ultra 512GB - Fiio UTWS5 - TinHifi P1 Max.

Re: Waveform Minibar (mod)

Reply #424
And waveform is different from waveform in audio-editors. I don't know is it a good or not. Firstly, its vertical scale is lower than 100%, secondly, it's maybe smoothed. Maybe, it's easier to seek, but it's not exact waveform. I don't know.
The most of the modern tracks are clipped at 100%, and remain look like clipped (but not at 100%) when zoomed out by y axis, but the Waveform Minibar displays them smooth and as if not clipped.
The waveform shown is an approximation of the true signal as decoded. It's generated on the fly from the full signal by cutting the track up into a few thousand buckets and in each bucket computing the minimum sample value, maximum sample value and the root-mean-square (RMS) of the samples.

This retains several relevant pieces of information like the peaks where decoding clips as the extents always include the extreme values. It will tend to show brickwalled audio as a bit more solid than it may truly be but that's what the RMS metric is for, to judge the contained energy.
The number of buckets are chosen to provide around one pixel of resolution in typical desktop resolutions while also not exploding disk storage requirements for cached waveforms. Similar derived plugins in other media players have similar approaches where they even pregenerate images of the data.

While it differs from what you may see in a typical audio editor like Audacity or Audition, the purposes of the programs are different and these components are able to leverage the constraints into providing a good experience across your whole library with minimal latency.
The vertical extent can be influenced by settings like replaygain and normalization. It's supposed to confer information at a glance and let you do informed seeking, not be "accurate" beyond usability. Any waveform you see in components or editors is going to be processed in some way, nothing shows "the exact waveform".

They're wide audio thumbnails, pretty much.
Stay sane, exile.