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_wave_seekbar (Read 799462 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

foo_wave_seekbar

Reply #1025
Can you remove the "Capture screenshot" entry from the context menu when in GDI or Direct2D mode?

Maybe. Haven't really determined whether I'm going to keep it in at all, really. It was not intended to be released, forgot to put it in a branch.
Stay sane, exile.

foo_wave_seekbar

Reply #1026
Ok, thanks!

foo_wave_seekbar

Reply #1027
The second one uses the Direct2D frontend. They're intentionally different to get some variations in.
I wrote a Direct3D effect that renders a smoother line as well which I currently use - https://gist.github.com/2477148.


Would it be possible for you to add to the first post of the thread a few different presets like the one you posted on the quoted post? Having a tutorial on how to do it by ourselves would also be immensely useful.

foo_wave_seekbar

Reply #1028
I'm using Win XP + foobar2000 v1.1.10 + Columns UI + Waveform Seekbar v0.2.15 with GDI in a Columns UI panel

The Waveform Seekbar does not render anything when I load and play Audio CD's; The panel is always blank !
I load an Audio CD into a fb2k playlist, right click on a track and go to 'Utilities -> Extract Seekbar Signature' ,
The CD Drive starts spinning out of control and will not slow down until I kill foobar2000.
Does this component have known limitations with Audio CD's ?

I have also noticed a few FLAC tracks which render most of the waveform except for the last 5-10 seconds !
Does this component have known limitations with some audio files ?

foo_wave_seekbar

Reply #1029
Does this component have known limitations with Audio CD's ?

Yes, it explicitly forbids CDDA and ignores it, among other formats. It should not attempt to read anything whatsoever from it. It's largely pointless to allow it to scan discs, at least automatically, as you cannot read a CD concurrently.
Your mad spinning might be a bug somewhere.

I have also noticed a few FLAC tracks which render most of the waveform except for the last 5-10 seconds !
Does this component have known limitations with some audio files ?

Your files may have incorrect metadata or be otherwise corrupted. Is the problem that the right side is not the end of the song, or that there's silence in the last few seconds?
Stay sane, exile.

foo_wave_seekbar

Reply #1030
^ the right side is not the end of the song .

The last file I noticed with this error was a few days ago; I must say it was a FLAC file living on my filesystem for many years which I thought I had lost
and I have no information on the source; maybe you are right, it could be corrupted. But it plays just fine all the way to the end, except for the fact
that the Waveform Seekbar will not render the last 5 or so seconds.

Is there anything I can do to repair it?

foo_wave_seekbar

Reply #1031
Minor bug in 0.2.21 I think:

-> playback internet stream (http://205.188.215.225:8018 )


Result: after a while the shaded color becomes Grey

Doesn't happen in Direct2D or Direct3D mode. Backgound color always = Light Purple.


______________________
Windows XP SP3

foo_wave_seekbar

Reply #1032
When playing a stream or content without a size, the window represents an empty waveform of one second.
As such, the position indicator will quickly fly past and leave the shaded progress, if any.

I don't really have a decent idea about what to show for streams, this has sufficed thus far, as the presence of the indicator hints that it's actually playing, which I find useful.

Of course, you might've run into some fun bug with the GDI mode, haven't really touched that much at all since it appeared.
Stay sane, exile.

foo_wave_seekbar

Reply #1033
When playing a stream or content without a size, the window represents an empty waveform of one second.
As such, the position indicator will quickly fly past and leave the shaded progress, if any.

I don't really have a decent idea about what to show for streams, this has sufficed thus far, as the presence of the indicator hints that it's actually playing, which I find useful.



I know. I don't have a problem with this. I just don't understand why the shaded color in GDI mode goes to Grey at some time instead of staying at Light Purple color like in the DirectX modes ...

foo_wave_seekbar

Reply #1034
This is the feature I was always waiting for! This is the feature that makes foobar2000 the only right music player for me. This is the only cause that I registered here just to thank you for that!

Thank you! You're great! Keep it up and updated!

foo_wave_seekbar

Reply #1035
I don't really have a decent idea about what to show for streams, this has sufficed thus far, as the presence of the indicator hints that it's actually playing, which I find useful.

Real time moving waveform?

foo_wave_seekbar

Reply #1036
With the current and foresee-able future architecture - impossible.
Stay sane, exile.

foo_wave_seekbar

Reply #1037
With the current and foresee-able future architecture - impossible.

What do you mean by that? I'd think that Directx rendering is fast.

foo_wave_seekbar

Reply #1038
Display presentation rate is not the problem. The problem is that the whole component is designed around a storage of waveforms representing a track of known length, all pre-computed at the time of display.
Changing the waveform triggers relatively costly updates in frontends, which is acceptable as it only happens about once per time you play a track.

It's designed to work this way, and the structure of the codebase is not remotely pliable for dynamic updating of the waveform data, nor scrolling/zooming around interactively.
Stay sane, exile.

foo_wave_seekbar

Reply #1039
But definitely the best idea. Same look as current waveform, just scrolling live.

 

foo_wave_seekbar

Reply #1041
After much tinkering, the waveform and seekbar are now sharp (no ugly fading).  That's the extent of my progress.


What did you change to make the waveforms sharp with no fading?


Probably I should elaborate more on my question.
https://docs.google.com/open?id=0B0VzdFckXFt3WG9lY0VpRHZWS0U
The screenshot shows the Direct2D, Direct3D and GDI in order.

In the Direct2D and GDI, the peaks are clearly seen, while in Direct3D, the peaks are smoothened and reduced.

So firstly, is there any advantage to using Direct3D over Direct2D?

If Direct3D does really have an advantage, how can I remove the smoothened peaks, so it looks like Direct2D or GDI?

foo_wave_seekbar

Reply #1042
The fundamental difference is how I use the waveform data in the Direct2D frontend vs. the GDI and Direct3D ones.

The data used for a waveform is two sets of two thousand datapoints, equally spaced along the track.
Each point records the minimum and maximum amplitude in that region.

In the Direct2D mode, I tell the API to draw a spline with all the datapoints, even though there are too many to fit in the window and rely on it to do a half-arsed job antialiasing the curves.

In the other modes, the amplitude drawn is a mix of the two closest bins, so it has a tendency to remove single-bucket transients. If your window was >2k pixels wide, there wouldn't be as much of a difference.

The unfilled line outline shader takes a bit more information into consideration, so it might give you a reasonable effect. One could possibly adapt it to do more taps, but I'm unsure if there's enough instructions left to do that.
Stay sane, exile.

foo_wave_seekbar

Reply #1043
The fundamental difference is how I use the waveform data in the Direct2D frontend vs. the GDI and Direct3D ones.

The data used for a waveform is two sets of two thousand datapoints, equally spaced along the track.
Each point records the minimum and maximum amplitude in that region.


Thanks for your reply. This leads to another question.
If I choose Direct3D now, and decide to switch to Direct2D in future, would it be necessary to rescan all the files?

foo_wave_seekbar

Reply #1044
@ Boiled Beans:

Of course not. The drawing mode decides only how to display the data in your waveform cache. The data won't be affected.

foo_wave_seekbar

Reply #1045
Could we please have checksum or other method on the wavecache.db so that changes to the audio file are reflected in the waveform without having to delete the waveformcache.db?

Thanks!

foo_wave_seekbar

Reply #1046
Checksums are utterly useless for this. Computing the checksum on something costs the same magnitude as computing the waveform.
The feature you _should_ be nagging about is the one that does some kind of media library notifications.

Anyway, if you re-scan waveforms with the context menu, the waveform should be updated. You might have to frob the "Always rescan" advanced preference for this. The default is that tracks are to be considered forever immutable, because that's the norm.
Stay sane, exile.

foo_wave_seekbar

Reply #1047
Checksums are utterly useless for this. Computing the checksum on something costs the same magnitude as computing the waveform.
The feature you _should_ be nagging about is the one that does some kind of media library notifications.

Anyway, if you re-scan waveforms with the context menu, the waveform should be updated. You might have to frob the "Always rescan" advanced preference for this. The default is that tracks are to be considered forever immutable, because that's the norm.



I checked "Always rescan if requested by user"

restarted foobar. Don't see any change in behavior. Don't see any change in right click in the waveform (still just configure) or right click on a track.

Am I looking for trackname --> right click --> utilities --> remove waveform seekbar signature?

That seems to work except I'd have to load the track, remove the signature and re load the track (to get the waveform to update).

Easier than deleting the whole database I guess.


foo_wave_seekbar

Reply #1048
The intended semantics with that option enabled is that Extract will rescan and overwrite the previous waveform and should display the new one on the next play.
Stay sane, exile.

foo_wave_seekbar

Reply #1049
http://www.foobar2000.org/components/view/foo_wave_seekbar

The "Download" Link downloads a file called "foo_wave_seekbar-0.2.21.fb2k-component", which does not show up in the file browser opened by the "Install..." option.
It seems to be a PK zip file. If I extract it with 7zip and repackage it as a .zip file the "Install..." option sees it and it installs fine, but why the weird file extension?