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.
Recent Posts
91
3rd Party Plugins - (fb2k) / Re: foo_vis_vumeter
Last post by oops -
you keep making claims that everything leaks memory. I'm confident SDK exposed methods don't leak memory, but when used incorrectly your component can. If you disagree, should be simple to show what leaks. Your current claim is equal to saying Visual C runtime leaks memory because it has malloc and new.
Also I haven't noticed any leaks in libebur128. If it indeed does, I'd appreciate you telling the source file name and line where memory is allocated that then isn't freed?
Perhaps I'm using them incorrectly and you've told me before to read some more SDK code. I've tried to follow that advice. However, if I need to refer to the implementation details to figure something out, we have a broken process.
With that said, not "everything" leaks; let's stay grounded. The foobar2000 SDK is great but not perfect and the application itself must be several times the size of the SDK--plenty of surface area for a minor issue as this. I think these specific leaks are inside the foobar2000 implementation code so I can't provide you with the exact lines. For the record I build with /W4 /WX /analyze for a bare minimum baseline quality and I've instrumented everything I have access to override malloc/new (including third-party libraries which is far more than most are willing to go). I get stuff that is not get freed at exit at some random locations that "my" stuff didn't allocate. It can also see it using the Heap Profiler towards the end of the .exe exit. Often it is only 16 bytes, but it is definitely there. Almost always happens when doing layout/live editing and many times my component(s) has no instances/windows created, removed or active. Furthermore, when scanning the reports/tables it points to offsets/addresses which are not inside any of the code I wrote, I'm left to conclude that it is elsewhere. If I were to guess (total shot in the dark), it is in whatever deals with the FTH files or where splitters are created.
I've definitely made mistakes, and when these tools have embarrassingly shown me my lack skills, I have tried to correct them. When I've created the many problems through the past couple of years working on these components through my ignorance, lack of expertise or misuse of the libraries, it has been clear and obvious I'm at fault. And in my profession, I've learned to assume I'm always at fault first before seeking other root causes. Last but not least, if I could have already root caused it and fixed it or avoid whatever I might be doing that causes a problem, I would have already and it would have never come up--but anyone who "trusts me" enough to run executable code that I wrote on their machine deserves to be at least aware of 2 things: a) that if there is a problem that I know of it is not getting swept away or ignored and disclosing such issues is part of the burden of that responsibility, and b) that I'm actively making a serious effort to make it better.

If there is a better way to go about this than forum discussions and help narrow down the source, let me know. It would be a good day if this can go away. And I really do wish it is my fault because that is the easiest and quickest way to get a fix out.

On libebur128, I'm putting together a PR but it is related to different queue implementations (Glibc, OpenBSD, FreeBSD--these are not as "drop in" as claimed in the code comments) and only happens on ARM64 (not ARM64EC) builds. Most likely that is why you've not seen it. But looking through the lack of activity on external PRs, I wouldn't be too hopeful that it will get merged in.

I fixed automatic updates for this component. The reason they weren't working is because the component is listed with a different name than it actually uses.
Thank you, sir. If it is the "s" and "z" difference. I tried to match the convention of the context around it. Sorry for whatever I did that caused mismatched expectations.

I'd like to request that foo_vis_vumeter have the ability to recognize user-extracted RAR's of this type and have the ability to recognize the BIN's same-name INI file in the skins folder and apply the same ignore/not ignore defaults to them.
I found out that was also a thing yesterday. Should be straightforward to add this. Side comment: I'm trying to document all of these different methods because they've been coming in in a fast and ad hoc way. I personally would not have used RAR for the combo. Keeping configuration separate is messy, though, so it is an OK compromise; I don't like dealing with NFO files in media libraries :) One other thing, INI has no schema so it will be a mystery if it got parsed correctly, especially when I had to guess at what each parameter was. So, let's not keep using that.
92
3rd Party Plugins - (fb2k) / Re: foo_vis_vumeter
Last post by Case -
I fixed automatic updates for this component. The reason they weren't working is because the component is listed with a different name than it actually uses.
93
3rd Party Plugins - (fb2k) / Re: foo_vis_vumeter
Last post by sveakul -
@oops : I just noticed in 0.8.0 that while RAR files containing a BIN and an *.ini settings file will show the option to "Ignore defaults", those skins that were previously extracted from the original RAR into the skins folder as a separate .BIN and .INI file do not give the option to ignore the .INI--the "Ignore defaults" choice is greyed out.

I'd like to request that fo_vis_vumeter have the ability to recognize user-extracted RAR's of this type and have the ability to recognize the BIN's same-name INI file in the skins folder and apply the same ignore/not ignore defaults to them.
94
3rd Party Plugins - (fb2k) / Re: foo_vis_vumeter
Last post by sveakul -
Since I assume only Peter's components get updated automatically, here is the release notice for 0.8.0.
Thanks for 0.8.0 and the ability to play the hiccup BIN meters directly from the RAR files, incl. the ability to use or not use the internal *.ini file settings!  All working fine so far.

BTW, the "Check for updates" automatically feature does not only apply to components written by Peter, some by Case do (e.g. External Tags), Mudlord (Effect DSP), Florian (foo_run), etc.  There is some kind of procedure you need to do make that happen I'm sure Case or Peter could let you know.
95
3rd Party Plugins - (fb2k) / Re: foo_vis_vumeter
Last post by Majestyk -
lly, here is the release notice for 0.8.0.

Thanks for posting Version: 0.8.0. I don't know if you worked on the skinloader or not but in this version it still only loads one instance. Plus sometimes it won't even load that one instance as you can see when I load the color cyan, at the end of the animation.
Try now. I tried to replicate the original's behavior. There are a few skins that take a longer time to load where all might not change together. Mainly it's the ones where the BIN is packed inside a RAR with the settings. The way this works is using a mailbox. So, try adding a delay in between the two fb.* commands. I'm going to take a shot in the dark and guess that the reason only VU is changing is that it clobbers the PEAK change before the render/uncompress thread opens the mailbox.

In addition, I added a few extra things. Let me elaborate:
  • There is now a EBU R 128 mode that uses libebur128. So, if you prefer an alternative loudness calculation to my implementation of BS.1770 that is it. It is a bit leaky. I squashed some of the issues with the CRT memory debugger and address sanitizer. There may still be some more, and I cannot vouch for the accuracy of the calculations. Use at your discretion.
  • I found a "tap and press" gesture in the original component to change skins when testing how skins changed in groups, so I implemented it.
  • The skin change menu will ONLY change skins within the group. It is a NOP otherwise. I put a watchdog timer of 2 seconds on it to avoid issues.
  • Since I got tired of right clicking the menu to change the tuning parameter, holding Esc, Right Alt or AltGr while moving the mouse wheel with do the same. Also, mouse buttons 4 and 5 will change it but since foobar2000 grabs those by default to move to the prev/next track in the playlist it might not be as good as the modifier methods. One small issue is that I didn't have time to fix the tooltip to reflect the change in real-time since I got sidetrack searching for the EBU R 128 memory leaks. I'll get to it soon.
  • To try to keep some loose feature parity with the BoringName's MusicBee plugin, I added ability to open separate left/right panel files (ending in 1.bin or 2.bin). I finally found the explanation for the curve adjustment parameter so that should work as well. But if you don't like any of the RAR skin's INI file overriding your settings, there is now the option to ignore the INI file.
  • Do not expect write back of the custom settings into the INI file due to the licensing restrictions of the RAR format.

I did come up with a work around (we were on the same track as I came up with it before reading your post).

This is what I came up with...
Quote
         if (name == "DisplayColour") {
          window.SetProperty("DisplayColour", info);
          display_system.InitColours();
          display_system.setColours();
         fb.RunMainMenuCommand("View/Visualizations/Analog VU Meter skins/DarkOne4PEAK/" + vu_style + " " + display_system.display_arr[display_system.display_combi_colour]);
         setInterval(() => {
             fb.RunMainMenuCommand("View/Visualizations/Analog VU Meter skins/DarkOne4PEAK/" + vu_style + " " + display_system.display_arr[display_system.display_combi_colour]);
          }, 200);
          setInterval(() => {
             fb.RunMainMenuCommand("View/Visualizations/Analog VU Meter skins/DarkOne4VU/" + vu_style + " " + display_system.display_arr[display_system.display_combi_colour]);
          }, 200);
          window.Repaint(g_all);
      }
   }

Oddly, I still need that extra fb.RunMainMenuCommand for DarkOne4PEAK, outside the interval. But I don't need the extra for DarkOne4VU.

96
3rd Party Plugins - (fb2k) / Re: foo_vis_vumeter
Last post by ApacheReal -
@ApacheReal : Nothing about your config is related to PNG handlig in foobar2000. You use only third party components and hacks to render your UI. The transparency hack for example is very inefficient, especially if the component behind there drawing the image was only designed to render the image on resize. It may keep re-decompressing and rescaling it a hundred times per second.

I thank you for your reply, you are always kind and courteous and I understand that foobar2000 was created for a certain management of internal covers. I can't say anything about this. Therefore there are two possible solutions. I have the author of the skin definitively put his hand to the artwork management in order to ensure that the internal images are managed considering that a 1200x1200 png can reach 2 MB or more, or those who create plugins and develop tools take this into account. Because I assure you that the two things are incompatible.

97
3rd Party Plugins - (fb2k) / Re: foo_truepeak True Peak Scanner
Last post by Case -
Your conclusions seem completely backwards. It's DR that would get completely bogus temperature results for the hospital as it only accounts for a minor sample. LRA takes the entire scene into account.
Also your description of the Dua Lipa song perfectly demonstrated that LRA took the unusual silent part into account as it seems to be different track from the others on the album.
98
3rd Party Plugins - (fb2k) / Re: foo_vis_vumeter
Last post by Case -
@ApacheReal : Nothing about your config is related to PNG handlig in foobar2000. You use only third party components and hacks to render your UI. The transparency hack for example is very inefficient, especially if the component behind there drawing the image was only designed to render the image on resize. It may keep re-decompressing and rescaling it a hundred times per second.

@oops : you keep making claims that everything leaks memory. I'm confident SDK exposed methods don't leak memory, but when used incorrectly your component can. If you disagree, should be simple to show what leaks. Your current claim is equal to saying Visual C runtime leaks memory because it has malloc and new.
Also I haven't noticed any leaks in libebur128. If it indeed does, I'd appreciate you telling the source file name and line where memory is allocated that then isn't freed?
99
3rd Party Plugins - (fb2k) / Re: foo_vis_vumeter
Last post by ApacheReal -
I thank you for your plugin but soon I will completely abandon foobar2000 because it does not allow correct management of embeddeb image files, especially if they are .png, I have to use these, because without internal images everything works perfectly as soon as I insert a png image, let alone 5 vu meter waveform seekbar all go jerky and this has always been foobar2000's problem.
100
General - (fb2k) / Re: Composer Metadata
Last post by toralilejit -
Pattern: %composer%

Sorry for reviving this, but I was looking for this. I spent half an hour trying to do this myself, sadly foobar isn't as intuitive as it should be in some things. I don't get why some metadata can be easily selected from the columns options, but others, like in this case, we have to do this kind of thing.

Anyway, thanks again