Author Topic: 3DBee (Cover Flow) Plugin  (Read 47350 times)

boroda

  • Hero Member
  • *****
  • Posts: 5171
thanks a lot! new version looks much better! almost ideally for font sizes >= 15 pt (i'm not sure what font size units are used now - pixels?)

100% DPI:



125% DPI:

Last Edit: August 18, 2024, 03:53:45 PM by boroda

BoringName

  • Sr. Member
  • ****
  • Posts: 916
thanks a lot! new version looks much better! almost ideally for font sizes >= 15 pt (i'm not sure what font size units are used now - pixels?)

GraphicsUnit

All I did was set this to Pixels. I said in the previous post that it defaults to Point but that was incorrect, it defaults to Display. As I didn't have it specified at all, I guess it was defaulting to Display. No idea how I haven't noticed that setting before as it seems to be everywhere now when I look up fonts.... guess it pays to take a break from things sometimes and check back later.

I'll do a bit more testing and update the addon page.

One other thing, the font dialog panel is filled by whatever fonts are installed in the system, for whatever reason the font size options increase by 2 once the size is greater than 12. If you want an odd numbered font size like 15, you can just type that size into the size field on the font dialog panel and it will work.



BoringName

  • Sr. Member
  • ****
  • Posts: 916
I've updated the addon page to 2.2

Changes for this version.
- Formatting changes on the skin config panel to make it look a bit better.
- Album/artist info display improvements.

These changes alter the display size of the fonts. You will need to increase the font size to get it back to the previous display size. eg) size 16 in 2.1 is around size 22 in the 2.2 version. It does appear to be displaying smaller than it should when I compare it the same font sizes in notepad so I'll take a look at that. If you don't want to mess around changing the sizes maybe hold off on this version.

You may need to use the Yoffset field to reposition them back to where they previously displayed. Sorry for that but payoff seems worth it.

BoringName

  • Sr. Member
  • ****
  • Posts: 916
New Version - 3DBee_2.3.zip

Changes
- Tooltip improvements
- Cleaned up some code
- Scrollbar width setting on the skin config page now works.  When you first load up you might notice the scrollbar has changed size depending what value is currently set. It was previously the width of the panel minus 220. 100 is the minimum it will display, if it's set higher than the panel width it will default to the panel width.

BoringName

  • Sr. Member
  • ****
  • Posts: 916
New version - 3DBee_2.3.1.zip

No functionality changes. This version has been modified to be packaged into 1 DLL file so that the SharpGL related DLL files are no longer required in the plugin folder. This brings it in line with the latest version of VUMeter.

edit: You may need to restart Musicbee a couple of times and have to place 3Dbee back where it was in arrange panels if it disappears after updating and restarting.
Last Edit: October 26, 2024, 10:39:33 PM by BoringName

BoringName

  • Sr. Member
  • ****
  • Posts: 916
New version - 3DBee_2.4..zip

Changes

- New option on the Skin Config settings panel "Corner Radius". It can be set between 0-50.

When set the corners will be rounded in the 3DBee window. To try and keep some consistency between images the radius value used is based on the width of the original image.
r = image.Width / (100 / Corner Radius).

Depending on your settings you may see the background of these rounded areas are shaded in the cover reflections, I'm probably not going to do anything about this as it's an issue with how the reflections are shaded. The only solution I can think of is going to be a lot of work and probably cause a lot more issues than it solves. You can turn off reflections by setting reflection height to zero or set them to be transparent, not really great solutions but that's all I've got for now if you don't want to live with them.

Mayibongwe

  • Sr. Member
  • ****
  • Posts: 1733
  • Heal The World
Thanks BoringName. Tested and it looks sweet.
Some stray observations on the display:
____


The version number is cut off on the main settings panel.


The 'OK' button overlaps with the 'settings saved' text.


Clicking 'save or apply' on the Skin and FXAA config windows does not close them like it does other windows.
By default, the header bar on the skin config window is also placed above the top-margin of the monitor (where the top gray row is).
I had to drag the window into view in order to see the X that closes it.

Edit:
New version - 3DBee_2.4..zip
I saw that the link on the add-on download page still redirects to a zip with version 2.3.1.
Have you forgotten to update it?

Edit 2:
I think I am missing player controls (the images are in the skin folder).
I tried resetting everything to default - is there an option I have to turn on?
Last Edit: December 29, 2024, 02:06:17 PM by Mayibongwe
Strength and Honour (2025)

BoringName

  • Sr. Member
  • ****
  • Posts: 916
The version number is cut off on the main settings panel.

The 'OK' button overlaps with the 'settings saved' text.

When I first created it I didn't realise those elements scale with different font sizes and I haven't really done any testing in that regard. I need to set some thresholds and sort it out.


Clicking 'save or apply' on the Skin and FXAA config windows does not close them like it does other windows.
By default, the header bar on the skin config window is also placed above the top-margin of the monitor (where the top gray row is).
I had to drag the window into view in order to see the X that closes it.
I did put some things in place to stop the panels going off the screen but that might not have been for the top of the screen. I'll take a look. I should change the "save" button on the skin config page to "Apply". It's not supposed to close the window, it's so you can see the effects of the changes you made and play around without having to constantly reopen the settings tab.

I saw that the link on the add-on download page still redirects to a zip with version 2.3.1.
Have you forgotten to update it?

Sure did, fixed now.

Edit 2:
I think I am missing player controls (the images are in the skin folder).
I tried resetting everything to default - is there an option I have to turn on?

On the main settings tab you need to have "view scrollbar" ticked and on the skin config page you need to make sure the four file paths are set for the scrollbar elements for whatever skin you are using.

BoringName

  • Sr. Member
  • ****
  • Posts: 916
New version - 3DBee_2.5.zip

Changes

- Set a fixed font size for the config panels so they won't get distorted with different user set font sizes in Musicbee.
- Miscellaneous fixes with layout and tooltips on config panels.

Mayibongwe

  • Sr. Member
  • ****
  • Posts: 1733
  • Heal The World
Yep, all good now, thanks.
Strength and Honour (2025)

BoringName

  • Sr. Member
  • ****
  • Posts: 916
New  version - 3DBee_2.6

Changes
- Improved the process for loading textures into VRam. If you use "Load all covers into memory" or keep selected playlists buffered, it should be considerably faster to load now.

kimt1688

  • Jr. Member
  • **
  • Posts: 109
I use the 3DBee plugin as a very good one.
However, when editing a playlist, the cover art switches so often that it causes an error and the whole MusicBee drops out.
I have removed the “Load all covers into memory.” option.
Right now, I am unable to open the MusicBee error log due to another error, but I think the memory error occurs more often than not.
Is there any way to temporarily hide the 3DBee panel, for example when editing playlists?

BoringName

  • Sr. Member
  • ****
  • Posts: 916
I use the 3DBee plugin as a very good one.
However, when editing a playlist, the cover art switches so often that it causes an error and the whole MusicBee drops out.
I have removed the “Load all covers into memory.” option.
Right now, I am unable to open the MusicBee error log due to another error, but I think the memory error occurs more often than not.
Is there any way to temporarily hide the 3DBee panel, for example when editing playlists?

I wouldn't recommend using "load all covers into memory" unless you have a relatively small library and a GPU with a lot of VRam. You can set playlists to be loaded into memory instead to keep the  memory usage down.

Are you using the latest version?

There is no option to temporary disable it. if you go into arrange panels and untick it. change your playlists then go into arrange panels and drag it back where it was, it should keep the same display configuration it had previously.

But I would be interested in the error log once you can access it. I did recently change how covers are cached into memory and I may have introduced a problem.

kimt1688

  • Jr. Member
  • **
  • Posts: 109
I was finally able to reproduce the phenomenon and collect the logs.
I am using a combination of MusicBee 3.6 RC3 and 3DBee 2.6.

MusicBee is always playing music.
Editing the playlist includes adding to the playlist from the inbox, moving files, changing ratings, and removing tracks from the playlist.
This can be done for individual files or by selecting multiple files.
The playlist that is being played and the playlist that is being edited are always different.
Code
2025/03/14 21:27:50 - 10.0.26100.0 - 3.6.9198.32659D - System.OutOfMemoryException: Out of memory.
Location System.Windows.Forms.Control.MarshaledInvoke(Control caller, Delegate method, Object[] args, Boolean synchronous)
Location System.Windows.Forms.Control.Invoke(Delegate method, Object[] args)
Location System.Windows.Forms.Control.Invoke(Delegate method)
Location MusicBeePlugin.AlbumTextures.CheckBuffered()
Location MusicBeePlugin.AlbumTextures.ThreadAlbumTexture()
Location System.Threading.ThreadHelper.ThreadStart_Context(Object state)
Location System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
Location System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
Location System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
Location System.Threading.ThreadHelper.ThreadStart()

2025/03/14 21:27:50 - 10.0.26100.0 - 3.6.9198.32659D - System.OutOfMemoryException: Out of memory.
Location System.Windows.Forms.Control.MarshaledInvoke(Control caller, Delegate method, Object[] args, Boolean synchronous)
Location System.Windows.Forms.Control.Invoke(Delegate method, Object[] args)
Location System.Windows.Forms.Control.Invoke(Delegate method)
Location MusicBeePlugin.AlbumTextures.CheckBuffered()
Location MusicBeePlugin.AlbumTextures.ThreadAlbumTexture()
Location System.Threading.ThreadHelper.ThreadStart_Context(Object state)
Location System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
Location System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
Location System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
Location System.Threading.ThreadHelper.ThreadStart()

In addition to the error log that can be accessed via the menu, error logs are also displayed in the form of small pop-up screens.

Code
MusicBee v3.6.9198.32659D (Win10.0), 14 3 2025 21:27:

System.OutOfMemoryException: Memory is insufficient.
Location System.Windows.Forms.Control.MarshaledInvoke(Control caller, Delegate method, Object[] args, Boolean synchronous)
Location System.Windows.Forms.Control.Invoke(Delegate method, Object[] args)
Location System.Windows.Forms.Control.Invoke(Delegate method)
Location MusicBeePlugin.AlbumTextures.CheckBuffered()
Location MusicBeePlugin.AlbumTextures.ThreadAlbumTexture()
Location System.Threading.ThreadHelper.ThreadStart_Context(Object state)
Location System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
Location System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
Location System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
Location System.Threading.ThreadHelper.ThreadStart()

Apart from this, when you are making minor edits to a playlist that is currently playing, such as changing the rating or modifying the number of times it has been played, the cover art for the currently playing track may be displayed as a blank image.
This doesn't affect the playback, so I don't mind.
No image current Album4
Last Edit: March 15, 2025, 02:09:07 AM by kimt1688

BoringName

  • Sr. Member
  • ****
  • Posts: 916
I was finally able to reproduce the phenomenon and collect the logs.
I am using a combination of MusicBee 3.6 RC3 and 3DBee 2.6.

Thanks for that. This thing has the potential to chew through a lot of memory very quickly. I do release it all but I think the garbage collection can lag behind sometimes and cause problems.

It is setup at the moment to reload everything if you alter a playlist that is loaded into memory or it's set to limit the flow to only show covers from that playlist. I think what may be occurring is the notification is triggering multiple times and triggering successive reloads that just overwhelms everything.

It's currently just a blanket reload approach. I'm sure it could be handled better by drilling down on what has changed and just removing/adding what is required.

But the really lazy approach that comes to mind at the moment is to just add an option to turn off auto reloading and possibly add a manual reload/refresh button. If the drill down approach looks like it might take a while, I'll take the lazy route while I work on doing it properly.