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

Re: foo_wave_seekbar

Reply #2025
The song title is accurate at least :D
Stay sane, exile.


Re: foo_wave_seekbar

Reply #2027
Anyone still here? Just installed, but can't add it to the layout. Doesn't appear in the context menu.

 W7 Ultimate, AMD FX8350, MSI GTX970.

Re: foo_wave_seekbar

Reply #2028
Zao,
Thank you once again for this amazing plugin! I am so thrilled with it - it makes Foobar so much more enjoyable to use. Thank you so much Zao!

I also have a (minor) request. I often trim the length of my mp3s with the excellent mp3DirectCut. But whenever I change an mp3, its waveform never updates (unless I rename the file). Would it be possible for the plugin to note the modified date of each song, and update waveforms when a song has been modified? Thank you.

Just_Addict, Foosion, etc.
I noticed you guys are able to draw shapes over the waveform! (Like Just_Addict's "timescale" effect and Foosion's Pac-man!)

Please could someone find a way to achieve what I really want. It looks like this:



Basically it's a semi-transparent grid of vertical lines in the background color. It makes the waveform less plain and adds the illusion of fine detail. I would also like the "playhead" to be a solid bar if possible, maybe 3 or 4 pixels wide, with 1-pixel gaps at the top and bottom. And then the icing on the cake would be to have the current track position following the playhead, as in my illustration. If any of these things could be achieved I would be very happy indeed. For me, this would make the plugin perfect.

Re: foo_wave_seekbar

Reply #2029
The vertical grid lines is already an option in my version and the width of the play position indicator can be adjusted through a setting barWidth near the top of the effect file.

I've been out of commission the last few months due to a back injury, but I had started creating a wiki before it happened, to try and explain how to use the various settings.

check the Grid section in the wiki for the possible options
https://github.com/just-Addict/seekbar-with-gimmicks/wiki

Currently grid lines are shown with same 'transparency' from top to bottom. But I like your idea of the varying transparency. Hadn't thought of that myself, but I will try and see how easy this would be to implement.

caveat: Some of the documented options don't exist yet in the current released version, but once I feel up to spending more than a couple of minutes behind a keyboard I'll try to push that version out too.

Re: foo_wave_seekbar

Reply #2030
Just_Addict,

Thank you! I hadn't noticed your 'Seekbar-with-gimmicks' before but WOW, I love what you've done! So many great options and features, and I love all the detailed comments and documentation, so people can edit it. I think the seekbar plugin needs a "standard" code like this that everyone can use, and I think Zao should make yours the default code (and even add a GUI to change the parameters).

As for my own requirements, your code looks very promising indeed. I need to spend a bit of time looking through the code and figuring out how to do what I want using your very helpful instructions. (At the minute I can't even work out how to change the colour and I'm stuck on the garden colors.)

If you could implement 'varying transparency', like in my illustration, that would be wonderful, even if it's only "top" and "bottom" half.

Also, if you or anyone could figure out how to make %playback_time% appear next to the playhead, like my illustration that would also be great, though this is not essential.

Re: foo_wave_seekbar

Reply #2031
Just_Addict,

I've been playing around with your Seekbar-with-gimmicks script and I absolutely love it! I have now got it to look almost exactly how I want. Thank you so much! :)

Here's a demonstration of how it looks, as well as a few new ideas for features…


A few minor issues to mention:

1. I love the Cheezy Magnify effect! It looks amazing, like the waveform is liquid. It's particularly impressive for a short track (like 5 seconds long). However, it only seems to work when "USE_PS_3_0" is turned on, which I can't use as it makes the playhead bar faded at the edges, and I like a nice, solid rectangle.

2. After a lot of experimentation, I found the place in the script where you can adjust the magnification level of the "Cheezy Magnify". I think it would be well worth adding a comment in the script next to this line:
      E = exp(u / 2000); // < - MAGNIFICATION LEVEL!

3. At the very start/end of a track, the magnify effect pushes the waveform off the screen (this is more of a problem with scrolling turned off and a high magnification level). It would be ideal if the start and end of the waveform could not be moved, perhaps that could be achieved by automatically reducing the magnification factor relative to proximity to the start/end?
   
4. I love the 'Crazy Colors'. It is very fun and attractive, though for me it's a little "too much color" to use regularly. However, if you implemented suggestions 4 or 5 in my illustration above (allowing a highlight color that fades out) then I might use Crazy Colors just for the selection/playhead bar, as it wouldn't occupy too much of the screen that way.

5. If you turn on Crazy Colors, scrolling, Cheezy magnification, and set it to zoom really close up, then it makes quite an attractive visualisation (certainly better than Foobar's default spectrum analyser). I don't suppose there is any way to have multiple wave seekbars in Foobar is there? If there was, I might have a small one open just as a visualisation panel. :)

Lastly, just to say that I hope you don't find all these notes/comments irritating! As a designer, I really just enjoy talking about these things and coming up with ideas. But I want to make clear that the above suggestions are only ideas for you to consider; they are not too important to me. I have already achieved what I really wanted to do, thanks to your script, which is to add detail to what was a very plain waveform. And I am SO happy with it! I can't tell you how happy it has made me! :)

I now consider my Foobar experience to be "complete". Between you and Zao, you have made a huge difference to my music-listening life! And by the way, music for me is not just fun - as a musician, I have serious use for Foobar, using it to catalog all my own work, and to compare different tracks, notes, recordings, samples, etc. I just adore Foobar and it is without doubt my favorite piece of software ever. And men like you and Zao have made it even better!

Actually there is one other feature that would complete my Foobar experience, though it's fairly off-topic here: That would be an A-B repeat feature which loops between two points and indicates the selection area on the waveform. I know that is never going to happen, but not to worry! :)

Re: foo_wave_seekbar

Reply #2032
I had to check to be sure, but point 3 in the image (bar following the outline from the inside) works by uncommenting #define INSIDE_BAR. Uncommenting #define OUTSIDE_BAR would of course do the opposite, following the waveform outline on the outside

Also, the '1' pixel space between the top and bottom of the position bar can currently be sort of achieved by using FADING_BAR and setting fade_from and fade_to both to 0.95 or thereabout.  That does not give an exact 1 pixel space but rather a 95% height of the top and bottom part of the bar since height ranges from -1 to 1, so ~0.95 is a reasonably close approximation to a 1 pixel space. I will see if this could be done with it being affected by the actual panel height.

As for the other ideas, I'll certainly look into those as future enhancements as these have given me ample ideas to work with, although I fear the elapsed/remaining time display will probably remain a wish since you cannot easily 'write' text in a shader without some form of  support for external textures containing the pre drawn characters/digits (at least not without some heavy math way above my skillset). My knowledge about coding shaders is far from the point where I could come up with a method to do this without support for external textures.

The best alternative I could see would be adding a (JScript or text?) panel above or below the wavebar displaying a progressbar with textual indicators for elapsed/remaining times.

And regarding having multiple wave seekbars, that is certainly possible. Just add more wave seekbar panels.

Re: foo_wave_seekbar

Reply #2033
Just_Addict,

Congrats for your  'Seekbar-with-gimmicks' it's really awesome. I have one question about Show_RMS, what do I have to change in your script to have the RMS part (insideRMS maybe ?) darker than the outside part of the wave (such as in the darkone4mod config bu Tedgo for example), I tried to modify your script myself, but without success as I know nothing about this king of programming (HSLS shader?)
Thanks in advance
Decalicatan Decalicatan

Re: foo_wave_seekbar

Reply #2034
@Decalicatan_Decalicatan

On line 991 change

fg2 = fg1+0.3;  to

fg2 = fg1-0.3;

play with changing 0.3 to make it more or less darker

Re: foo_wave_seekbar

Reply #2035
@Just_Addict

Thank you!    :)
Decalicatan Decalicatan

Re: foo_wave_seekbar

Reply #2036
Just_Addict,

Thanks for your answers, all very helpful. Your suggestion about the FADING_BAR worked, however, the only way I can get FADING_BAR to activate is to turn on USE_PS_3_0 - and when I do that, the bar fades horizontally, which I really do not want! Is there any way to stop the bar from fading horizontally?

As for the other ideas, I'll certainly look into those as future enhancements as these have given me ample ideas to work with

Thank you very much Addict. As I have said, I am really happy with this now so don't worry too much about my other suggestions. The one I would like the most is a fading grid, like this:



In this example, it fades from 100% to 0% in the top half, then from 25% down to 100% in the bottom half. This seems to achieve the best of both worlds, giving the waveform a sense of texture and detail, without making the color too 'murky'. It also creates a nice line down the center of the wave which makes it more symmetrical. :)

Thanks again! :)

Seekbar not in sync with music.

Reply #2037
Hi!

It looks like the seekbar is seriously out of sync with the music in some cases. I attached the file I noticed it with.

https://drive.google.com/open?id=0ByfdfPvnoDuzc2t4UFYyRXZibjA

(It looks like the forum file attaching is only successful in wasting my time with vague error messages)

Re: foo_wave_seekbar

Reply #2038
It'd be interesting to see in what obscure way your file lies about its duration.
Worst case is that if it cannot be divined from metadata/tags, only thing I can do is to detect deviations and reprocess the whole track.

Not that it matters much, as I've fought for like six hours now to get a build environment up that has all the mehness needed to build something w/ Boost, D3DX9 and XP support.
Stay sane, exile.

Re: foo_wave_seekbar

Reply #2039
Maybe it's foobar2000 bug?
foo_verifier writes: "Warning: Reported length is inaccurate : 1:19.133605 vs 1:18.206259 decoded"
sndfile-info writes the following info about this WAV file: "Block Align: 1024       Samples/Block: 1012"

1:19.133605 * 22050 = 1744896 samples = 1704*1024
1:18.206259 * 22050 = 1724448 samples = 1704*1012

Probably  fb2k uses 'block align' data to calculate duration while in this case it should use 'samples per block'.

P.S. Why keep XP support?

Re: foo_wave_seekbar

Reply #2040
lvqcl: So it might not necessarily be "my fault", yay!

Regarding XP, the core problem is that there's an unknown number of people, however small, that will be highly inconvenienced if I push a new breaking version onto the updater. If they accept the (defaults to checked) update, their component breaks and they need to seek out an older version from one of my websites. This will be a stumbling block for all future update checks.

There's plenty of reasons to run XP still, like living in areas with limited purchasing power, car/media PCs, pure stubbornness, incompatible drivers/hardware.

Sadly there's no path I can take with the current incarnation of the component that would get me out of this pickle, apart from forking it and promoting the new version. I've kind of got the "minibar" software-only re-implementation down that path, but that's not designed for actual users.

I'd also like to nuke D3D9 in lieu of D3D11 or OpenGL, but that would break things for _everyone_ in a similar manner.

In the end, I'm reluctant to making any major changes unless I've got some actual new functionality that would warrant it. Breaking some/all users for a bugfix of a niche ADPCM use case sounds like a bad idea :D

Suggestions welcome if there's some obvious way forward I've missed.
Stay sane, exile.

Re: foo_wave_seekbar

Reply #2041
Hello Zao,

the current foo_wave_seekbar.dll release already offers two different front ends for Direct2D and Direct3D, each requiring an individual external DLL included with the plug-in distribution. With regards to that I see no issue in adding additional render paths to the plug-in. Also a new/different program logic (i.e. Wave_Seekbar v2.0) could be issued either within the same DLL or by adding an additional DLL to the distribution. The user can choose from the different plug-in code bases (v0.2/1.0/2.0) and render paths (D2D/D3D9/D3D11) from the plug-in options dialog, defaulting to v0.2/D3D9 ensuring support for the XP platform.

And yes, the other logical way indeed is to offer a new Wave_Seekbar plug-in distribution with a different name to distinguish it from the original release. For example the new version could go by the name "Wave_Seekbar_D3D11" or Wave_Seekbar_Next", for the old release a slight change of the name to "Wave_Seekbar_D3D9" or "Wave_Seekbar_Legacy" might be worth a thought should you release another update of the original component.

Re: foo_wave_seekbar

Reply #2042
P.P.S. or maybe foobar should take number of samples from 'fact' chunk? I'm not sure about correct way to deal with compressed WAVs.

Re: foo_wave_seekbar

Reply #2043
lvqcl: I've escalated the problem with your particular file to core, seems like your file is one of the rare truthful WAV+ADPCM files.

deus-ex: Sadly there's architecture constraints prohibiting where you put foobar2000-specific services. In short, everything that uses the SDK needs to be fully contained in the component DLL, and a fb2k-component should ship with only one component DLL.
In order for Windows XP to load and run a DLL, it and all its directly loaded dependencies needs to be built with a legacy toolchain, which means either running VS2010 or figuring out how to build every single dependency with VS2015's v140_xp toolset.
The frontend DLLs only speak my own handmade interface across the boundary, they contain nothing foobar2000-specific as the required services are just not available.
In the end, this means that the module that implements and uses the foobar2000 services needs to be loadable on all targeted OSes.

As for renaming the component, there's no provisions for doing that in the updater/repo, so any future version would be a new name, much like the prototype minibar.
Stay sane, exile.

Re: foo_wave_seekbar

Reply #2044
I have a feature request:

In my music library I have many (mainly classical) tracks which are very quiet. As a result, there's not much to look at in the waveform output.
Is it possible for you to implement an option to scale the waveform so that the track peak corresponds with the width of the waveform seekbar panel? Possibly in combination with ReplayGain only?

Re: foo_wave_seekbar

Reply #2045
Sorry, just read a few pages back that this is already possible...

Re: foo_wave_seekbar

Reply #2046
I have a different problem though... I've used this great panel for over a year now and since about a week ago, it won't scan new tracks after a while. I tried deleting the database or reinstalling the panel, but after 5 to 10 tracks, it won't do anything. Any idea why?

Re: foo_wave_seekbar

Reply #2047
Are you playing some particular kinds of files or have them adjacent in the playlist?
Is the foobar2000 process using all or none of your CPU?

I'm not sure if they'll get flushed into the 'jobs' table in the database if the processing threads are getting wedged, but if you can inspect that with SQLiteStudio there may be some hints as to what goes wrong.
Stay sane, exile.

Re: foo_wave_seekbar

Reply #2048
I'm just playing music through the normal Columns UI filter + NG Playlist.
The CPU usage seems quite normal, hovers at about 10%. That used to be less, but I use more taxing components now than I used to.

I closed foobar, looked into the database and deleted all entries in "jobs" and then reopened foobar, and now it works again. For now, I'm afraid. Any idea how I can prevent the jobs from clogging the thing?

Re: foo_wave_seekbar

Reply #2049
When it happens again, it'd be nice if you find the queued up jobs in the table that may be at fault.
Can't really diagnose the problem without knowing what files end up causing it.
Stay sane, exile.