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 105826 times) previous topic - next topic
0 Members and 4 Guests are viewing this topic.

Waveform Minibar (mod)

A spin-off topic for foo_wave_minibar_mod from the original Waveform Seekbar topic.

The component is downloadable for foobar2000 v1.4 series from the official repository and from my homepage.
A version with statically linked C runtime for foobar2000 v1.3 is available here.

This component shows a software rendered waveform for the playing track or optionally for the selected track. The waveform representation looks prettier than a static seekbar and often makes seeking to desired position easier.

Some differences to original components include the ability to start playback from the stopped state instantly just by clicking on the waveform and possibility to jump to a timestamp in another track just by viewing its waveform and clicking on it.

The latest version 1.0.14 that was just uploaded introduced an option to reverse the mouse wheel seeking direction.

Re: Waveform Minibar (mod)

Reply #1
Thanks, Case
I just updated.
Waveform Seekbar is one of the best of foobar component to me.

Re: Waveform Minibar (mod)

Reply #2
Thanks for the reverse scroll option. Loving the mod even more now. Couldn't live without this.


Re: Waveform Minibar (mod)

Reply #3
Excellent component! I have replaced the stock seekbar with this and am greatly enjoying it.

I have noticed that the rendered waveforms are saved and re-used. Where are the waveforms being saved? I had a brief look through the foobar2000 folder but couldn't find anything.


Re: Waveform Minibar (mod)

Reply #5
Beautifu!!!! Thanks a lot!

Is there a way to replace the seekbar in the tool-bar by the minibar? (Apologies for soo many 'bars')


Bernd

Re: Waveform Minibar (mod)

Reply #6
Unfortunately that is only possible when using Columns UI.

Re: Waveform Minibar (mod)

Reply #7
Alternatively (in CUI) you can disable seekbar in toolbar and place waveform seekbar right below toolbar, as separate UI element. This is what I was doing some time ago. But now I just moved it to the bottom of window and made it much larger.

Re: Waveform Minibar (mod)

Reply #8
 :(
Thanks anyway!

Bernd

Re: Waveform Minibar (mod)

Reply #9
Thanks for the reverse scroll seeking, one thing that always bothered me with the original Waveform Seekbar :)
Could you add an optional stereo waveform?

Re: Waveform Minibar (mod)

Reply #10
Is that really useful? In vast majority of my music the channels are so similar that separating them makes no sense. And to see any details the seekbar needs to use twice the space. Also currently the database stores downmixed content. Enabling stereo mode would require nuking existing data and rescanning everything.

I'd prefer not adding such option.

Re: Waveform Minibar (mod)

Reply #11
When making the original minibar, a design choice I took was that it should only deal with downmixed audio and be as simple as possible with no excessive frills. I like that Case is continuing with that policy for his modified variant.

If you're playing audio with dissimilar channels like chiptunes or tracked Amiga music and really need the channels, there's always the stable-and-boring foo_wave_seekbar with all its complexity.

It's never been the goal of any of the components to fully represent the underlying waveform, as it's so extremely downsampled that everything visualised is a bit abstract to begin with. If you want to see the actual waveforms, I recommend Audacity or CoolEdit96.
Stay sane, exile.

Re: Waveform Minibar (mod)

Reply #12
When making the original minibar, a design choice I took was that it should only deal with downmixed audio and be as simple as possible with no excessive frills. I like that Case is continuing with that policy for his modified variant.

If you're playing audio with dissimilar channels like chiptunes or tracked Amiga music and really need the channels, there's always the stable-and-boring foo_wave_seekbar with all its complexity.

It's never been the goal of any of the components to fully represent the underlying waveform, as it's so extremely downsampled that everything visualised is a bit abstract to begin with. If you want to see the actual waveforms, I recommend Audacity or CoolEdit96.

Amen.

Re: Waveform Minibar (mod)

Reply #13
Is that really useful? In vast majority of my music the channels are so similar that separating them makes no sense. And to see any details the seekbar needs to use twice the space. Also currently the database stores downmixed content. Enabling stereo mode would require nuking existing data and rescanning everything.

I'd prefer not adding such option.
Okay, fair enough :)
I'm just used to the stereo waveform of the original Seekbar, and I have a mono waveform now in the same (quite large) space as I had the stereo waveform (I might need to reduce the height a bit now).
Still the most important feature here is the reversed mousewheel seeking; I'll take functionality over form :)

Re: Waveform Minibar (mod)

Reply #14
I have a question - since Waveform Seekbar scans files at the beginning it creates very useful data to apply volume gain to real audio. Is it possible to use it in that way, to normalize music tracks?  By another plugin or ReplayGain? In theory at least...

Re: Waveform Minibar (mod)

Reply #15
The analysis is very crude.

It makes one pass across the audio data, splitting it into a few thousand sections. Each of those sections has min/max values and a rudimentary measure of energy computed.

While it could technically be possible to integrate a RG/R128 scan with the existing analysis pass, there's no point really. Just decode the files twice, once with the minibar and once with whatever RG scanners you have.

As for the waveform data itself and its min/max values, it's not exposed to any other components. I considered doing so with the `foo_wave_seekbar` component, but never really bothered. (Fun fact, it used to be two separate components, a database and an UI element.)

For the minibar and some hypothetical normalization component, that's up to Case to decide. I would just recommend using ReplayGain like the rest of us :D
Stay sane, exile.

Re: Waveform Minibar (mod)

Reply #16
Unfortunately Protracker tunes are RG incompatible :)

I'm aware of algorithm simplification and I don't expect studio precision. But observing huge differences in some material I listen to now Waveform Seekbar display seems to give more or less accurate information about the general level of particular tracks. While leaving  some safe overhead and sacrificing couple of trimmed peaks here and there it could be away to boost some really quiet tracks.

I think having couple of numbers exposed outside could open doors for some experiments.

Anyway - since I discovered it I find Waveform Seekbar one of the most useful things while checking a lot of audio material (not necessarily a musical one) so thanks to all you guys involved in creating it.

Re: Waveform Minibar (mod)

Reply #17
Sure it would be theoretically possible. But the functionality is not something I'd put in the seekbar component. Also the database format isn't optimal for that as you'd still have to parse thousands of values to find the peak.

I haven't looked into the m-TAGS component but shouldn't that allow storing ReplayGain data in external file? If it doesn't, I think it would be possible to make a component that allows storing any tag data in a database or external files.

Re: Waveform Minibar (mod)

Reply #18
No, sure I wouldn't like to put any additional burden onto this plugin. I'm just talking about exposing data that's already there (if it is there).

m-TAGS stores meta data in it's own files but in order to apply RG you need to scan all files to create m-TAGS files, then put those files into the playlist and then scan them with RG. It is a little bit of a hassle if I'm doing it right :)

Re: Waveform Minibar (mod)

Reply #19
@no9 , if you are on foobar2000 v1.4 beta you can test my latest experiment. A simple component that allows writing external tags to any file format.

Once you install it verify decoder preferences so that "External Tags (reader)" is the first decoder and "External Tags (writer)" is the last, like this:


If the writer part is before other decoders, it will write external tag to formats that wouldn't need it. Should cause no other harm.

The external tag is written to the location the source file is at with ".tag" appended to its name. If something already exists by that name it will be overwritten.

Edit: Removed attachment.

Re: Waveform Minibar (mod)

Reply #20
Checked. It works flawlessly. Thank you very much Case!

Re: Waveform Minibar (mod)

Reply #21
I removed the earlier attachment as I released the External Tags component on the repository (and on my site).

The new version also supports tagging subsongs.

Re: Waveform Minibar (mod)

Reply #22
Hi!
@Case, I tried your new component and I was able to edit the xm module tag. Thank you for your work!
Is it possible to work with packed files (zip, 7z or rar)?
I think most people (including me) store a music modules collection (for example) in packed form.

Thanks.

Re: Waveform Minibar (mod)

Reply #23
This is great, thank you so much for this component! I was wondering if it would be possible to use "follow cursor" mode when foobar is not playing, and "follow playback" when it is playing?

Re: Waveform Minibar (mod)

Reply #24
I started a new topic for External Tags. Hopefully some moderator moves related posts there.

Is it possible to work with packed files (zip, 7z or rar)?
I changed the component to allow tagging files in archives.

I was wondering if it would be possible to use "follow cursor" mode when foobar is not playing, and "follow playback" when it is playing?
Sounds like a decent idea. I'll add it for the next version.