getmusicbee.com

MusicBee & Add-Ons => Customizations => Plugins => Topic started by: BoringName on January 27, 2023, 04:20:45 AM

Title: 3DBee (Cover Flow) Plugin
Post by: BoringName on January 27, 2023, 04:20:45 AM
I haven't submitted the addon yet. There is a lot to unpack so I wanted to have this page up first to link to. I'll submit it when I'm done here.

It's now available - https://www.getmusicbee.com/addons/plugins/481/3dbee/

First off some credits. This is based on the source code from a program called CoverJuke (https://sourceforge.net/projects/coverjuke/) by Mikaël Le Berre.

It was written in C++ and I planned to just translate it to C# but I ended re-writing most of it as the code is quite outdated. But the formulas that make the covers spin around are all the original author and this plugin would not have happened without that source code to base it off.

I also used some icon artwork from hiccup in the Musicbee skin I created and the plugin icon I'm going to use on the addon page.

Installation


Make sure you are on Musicbee version 3.5.8402 or later. It will not work on earlier versions.
The zip contains 4 x DLL files and a "3DBee" folder. The "3Dbee" folder needs to go into the persistent storage folder of Musicbee, the plugin will not work without this folder present.
On my computer its in C:\Users\BoringName\AppData\Roaming\MusicBee

If you are not sure, it should be the same folder the Musicbee settings file is in, so just search for MusicBee3Settings.ini and place the 3DBee folder in the same folder.

Place the DLL files in the usual plugin folder, something like C:\Program Files (x86)\MusicBee\Plugins

When you first open Musicbee you may have to enable the plugin before you can see it in the arrange panels section. Edit Preferences->Plugins and click enable for 3DBee. Hopefully it works. There is a configuration button here that displays some settings, I will go through that later.

Once enabled, go to View->Arrange Panels. There should be a 3dbee element on the right hand side that you can drag to any panel you want. When placed in certain spots, the height cannot be adjusted, eg) the top panel or above the files element in the main panel. This patched version allows 3DBee to be resized when placed above the files element in the main panel - https://getmusicbee.com/patches/MusicBee35_Patched.zip
 I tried implementing a way to set the height but they all caused graphical issues. The easiest way is to place the 3dbee element in a spot that lets you set the height, like under the files element in the main panel. Adjust the height to what you want and then place it back to the original location, it will maintain the adjusted height.
When moving the element around to different panels, you may notice the track and artist info will disappear or start displaying gibberish. I'm not sure on the cause of this but just restarting Musicbee will fix it. It's only a problem when moving the panel around to different places. Better font handling is on the to do list.

Settings

Edit Preferences->Plugins-> configure button under 3DBee will give you access to most of the 3DBee settings. There are also skin settings I will go through later.

Move flow when playing track changes - When enabled the flow will navigate to the album cover of the current track playing.
Move flow on selection - When enabled the flow will navigate to the album cover of the song you selected in the main file list. If you select multiple files it just goes to the first one in the selection.
Use Musicbee no image artwork - When enabled, albums without cover art will display with Musicbee's no cover artwork. When disabled it uses the nocoverCD.jpg/nocoverCD.png file located in the currently active skin folder.
Disable no artwork image - When set, albums without artwork will not display an image in the flow, it will just leave an empty gap. It will also leave you with an empty screen if the flow is moving too fast to load the images, more on that in the how it works and limitations section below.
Use Musicbee default Font - When enabled 3DBee will use whatever font is currently set in MusicBee. This setting overrides any font names listed in the 3DBee skin configuration file.
Use Musicbee foreground colour for progress bar - When enabled the progress bar "should" be the same colour as the current Musicbee text. This overrides the current 3DBee skin configuration settings.
Maintain Cover Aspect Ratio - When enabled, covers will be displayed with their current aspect ratio. This can look a little janky if covers are inconsistent sizes. But so do distorted covers...
View Scrollbar - Sets the visibility of the scrollbar.
Mouse scrolling - Enables the flow to be swiped across with the mouse (like swiping with your finger). It's a bit clunky if you try and do it too quickly. I found it easier to just click between the scrollbar button and one of the arrows, that skips forward or back 20 albums at a time. But I left this in case someone wanted it.....Enabling this setting disables the View scrollbar setting.
Load all covers in memory  - When enabled 3Dbee will attempt to load all covers into GPU memory for a better experience. Be careful with this setting. More info about this in the how it works and limitations section below.
Album Buffer - How many albums to keep in GPU memory. This setting has no effect if "Load all covers into memory" is enabled.
Max framerate - The maximum framerate 3DBee will attempt to run at. Anything over 100 is probably a waste. The higher it's set, the more CPU will be used when the flow is active.
Animation Threshold - If the selected album minus the current album is greater than this threshold, it will immediately jump to within that threshold and continue scrolling to the selected album. It reduces scrolling considerably on large libraries. To disable it, set the number to a value greater than the number of albums in the library.

How to use

Once 3Dbee is loaded up you will see a display of your album covers, depending on the settings you choose you can navigate this display in different ways.
Rolling the mouse wheel when the pointer is in the 3DBee window or clicking the arrows on the scrollbar will move the album cover left or right by 1 album
Clicking between the scrollbar button and one of the arrows will move the album covers left or right by 20 albums.
Clicking the scrollbar button and dragging it left or right will navigate across the whole collection.
If mouse scrolling is active you can click and drag across the covers, depending on how fast you drag will determine how many albums it scrolls through. It needs some work...
Depending on settings, the flow will automatically navigate to current playing albums or whatever you select in the files list.

If you right click in the 3DBee window, a context menu will display. This lets you choose between 6 different flow styles and select any installed skins.

Skins

3DBee comes with 4 skins. 3 came with the source code and I made a Musicbee theme for a bit of fun. You can add as many as you want or edit the existing ones. The skins are located in the skin folder inside the 3DBee folder you copied during install. They allow the user to fully customize the appearance of the 3DBee window.
Each skin folder contains a "skin.ini" file that handles the configuration with the following settings
favoriteplugin - this sets which flow will be used when you select this skin, you can change it afterwards.
nbleftalbum - How many albums to display left of the current selected album.
nbrightalbum - How many albums to dislplay right of the current selected album. These 2 settings only apply to certain flows eg) both work with coverflow but vista has the left album hard coded to zero because there are no visible albums to the left on that flow.
reflectheight - how tall to make the reflection.
direction - Currently no effect but future versions will allow you to set which direction the flow moves.
backimage - Which image in the skin's wallpaper folder to use for the background. Use the full name with file extension. If this is set to none or doesn't match a file it will display a background that matches the settings below.
reflecttransparent - Sets the transparency of the reflections.
spacetextscrollbar - sets the space between the artist info and the scrollbar- this setting is actually redundant as the text can be placed where ever you want using the offset options.
There is a bunch of font settings for different things. The fontname has no effect if using Musicbee default font option.
*fontname - Needs to match a TTF font file located in the skin's font folder.
*fontheight - Sets the size of the font.
*fontoffsetX - Adjusts the font position on the screen.
*fontoffsetY - As above.
centerInfoFont - Specifies whether the album and artist font is centered or left justified.
backred
backgreen - The colour of the background if no image is set.
backblue
tablered
tablegreen - secondary colour of the background. If different to the back settings it will create a horizon with a gradient transition.
tableblue
fontartistred
fontartistgreen - sets the artist font colour.
fontartistblue
fontartistshadow - sets whether the artist font is shadowed.
fontalbumred
fontalbumgreen - you probably have these figured out.
fontalbumblue
fontalbumshadow
loadbarred
loadbargreen - Sets the progress bar colour for load all albums mode. Overridden by the use mb skin colour setting.
loadbarblue
horizontalangle - these settings manage where the flow is on the screen. I actually haven't played with the angle settings to see what they do....
verticalangle
movehorizscene - moves the flow left or right on the screen.
movevertiscene - moves the flow up or down on the screen.
zoomscene - zooms in or out on the flow. If you zoom in to much it will disappear because the viewpoint is behind the flow.

If you want to add your own skin, just copy an existing skin folder and rename it to whatever you want. When you reload Musicbee it will automatically add the folder name to the skin selection list when you right click the 3DBee window. Then just edit the skin.ini and replace any image files. Just make sure to keep the same file names for the images.


How it operates and limitations

3DBee grabs album artwork from Musicbee (effectively your hard drive) and uploads to GPU memory so it can be displayed in a 3D environment. This process can have a few limitations, mostly being hardware related.
Uploading textures to the GPU is a little slow.  It could be faster if all the album covers were the same size but they rarely are. It could also be the SharpGL library I'm using and the fact I'm basically embedding a full application inside Musicbee....
If you don't use the "load all into memory" option, you will notice it struggles to keep up with displaying the covers when you move the flow quickly, it will just display no cover artwork if you move really fast. Basically because it can't read them from the HDD and upload them to the GPU fast enough to display them.

When it's all loaded into memory it works perfectly. All covers display no matter how fast you go, but the problem is how much memory you have. I've tested it on 2 systems, 1 with 345 albums with crappy artwork running from an NVME and another with over 2000 albums with decent artwork running from a mechanical drive. The first one uses over 1gb of GPU memory and the second uses over 6gb of GPU memory.

But both have the issue of the covers not loading fast enough if they are not in memory so I'm pretty sure the bottleneck is the texture upload. Then again, both of my test computers are pushing 5 years old so others might not notice an issue.

The album buffer setting attempts to alleviate this problem somewhat. It will keep the specified number of albums in GPU memory. if it's set to 50 it will keep 25 to the right and left of the selected album in memory. Once they have been loaded the first time you browse the covers you will be able to browse through these smoothly until the covers go outside of the buffer range and get unloaded from memory. So if you can't load them all into memory you can play around with this setting and see what works best. You can see how much GPU memory is used with task manager on the performance tab.

I wasn't able to test what happens if the GPU memory fills up. I'm running a gtx 1060 and that has 6gb. it's probably going to take someone with a big library and old or onboard video card to test that out. I also don't know what happens if you load all your covers into GPU memory and then crank up a demanding game...

All my testing has been done with Nvidia graphics cards so I also have no idea how it will with other brands.

To Do List
Add a font picker
Add the ability to create/manage skins from within the UI.
Improve mouse scrolling to make it less janky.
More interactions with MusicBee like
- adding context menu items to play next/queue songs etc...
- filter displayed albums based on a search
- display all the songs for the currently selected cover in the files element.
Add a panel showing current album/track information
Optimize the OpenGL code.

I'm just going to stick this here.
Buy me a Bourbon (https://www.buymeacoffee.com/boringname)

I can be a pretty big procrastinator but I'll feel guilty dragging my feet if people put some hard earned down waiting for an update... and also, I put a lot of work into this thing, in any case, it's totally optional!
Title: Re: 3DBee (Cover Flow) Plugin
Post by: boroda on January 27, 2023, 05:24:57 AM
Good news!

but:
The zip contains 4 x DLL files and a "3DBee" folder. The "3Dbee" folder needs to go into the persistent storage folder of Musicbee, the plugin will not work without this folder present.
On my computer its in C:\Users\BoringName\AppData\Roaming\MusicBee

If you are not sure, it should be the same folder the Musicbee settings file is in, so just search for MusicBee3Settings.ini and place the 3DBee folder in the same folder.

Place the DLL files in the usual plugin folder, something like C:\Program Files (x86)\MusicBee\Plugins
why not to install plugin by default using "add plugin" button in mb prefs? this will install plugin to writable "%AppData%\MusicBee\Plugins\" folder for installer mb version, and to just "<MusicBee App Folder>\Plugins\" folder (usually, also writable) for portable mb. in this case, you need to change the plugin to make it search for "3DBee" folder inside either of these 2 "Plugin" folders, and "3DBee" folder must be simply placed inside plugin .zip for automatic installation.

i think installation instructions would be simpler.

-----------------

p.s. i'm using the following code in my tagging tools plugin to get the correct "Plugins" folder (either %AppData%\MusicBee\Plugins\"  or "<MusicBee App Folder>\Plugins\"):

Code
            PluginsPath = Path.Combine(Application.StartupPath, "Plugins");
            if (!File.Exists(Path.Combine(PluginsPath, "mb_TagTools.dll")))
                PluginsPath = Path.Combine(MbApiInterface.Setting_GetPersistentStoragePath(), "Plugins");
Title: Re: 3DBee (Cover Flow) Plugin
Post by: BoringName on January 27, 2023, 05:53:16 AM

i think installation instructions would be simpler.

You're right. I was more worried about the 3DBee folder being copied to the right location. It has skin elements that need to be there for it to work and I don't think that can be automated from the "add plugin" button? If it can I will look into it.
I am using the GetPersistentStorage() command to read and write to the correct folders, I just didn't have a way to get the skin folders there in the first place.

The plugin has been submitted.

One thing I forgot to mention in the original post. The plugin is set to refresh when updates are made to song tags or new files are added to the library. If you are going to do a few updates and you have a decent sized library, I would consider disabling the setting to load all files into memory or just disable the plugin while you are doing a lot of updates. If load all albums into memory is enabled, it will be reading artwork for every album in your library every time you make a change which is a lot of unnecessary hard drive thrashing.
I'll look at handling that a bit better in future updates.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: phred on January 27, 2023, 01:54:30 PM
Thanks for undertaking this project. I quick plain vanilla test shows it's working well. Now I need to play with the settings and find a good location for it.

At the moment I have three suggestions:

1- Include a readme file in 3DBee.zip. It's a pain in the butt to have to go back to the start post on the forum to check which settings do what. Just copy most of your start post and include that in the archive.

2- Give us an option to have it in a resizable floating panel. My MB layout is so tight right now that I'd have to give up something in order to make 3DBee a decent size.

3- Add a version number. Perhaps in the configure panel, or as part of the archive filename. I'm sure there are going to be updates in the future and have a version number makes it easier to track what a user is using.

I may have more comments/suggestions once I start experimenting with the various settings, but for now, nice job!
Title: Re: 3DBee (Cover Flow) Plugin
Post by: boroda on January 27, 2023, 04:37:45 PM

i think installation instructions would be simpler.

You're right. I was more worried about the 3DBee folder being copied to the right location. It has skin elements that need to be there for it to work and I don't think that can be automated from the "add plugin" button? If it can I will look into it.
"add plugin" button copies all files and folders from plugin .zip to one of 2 (depending on "installation type" of mb) "Plugins" folders. so "3DBee" folder placed to the root of plugin zip will be automatically copied to either %AppData%\MusicBee\Plugins\" or "<MusicBee App Folder>\Plugins\". you can get current "Plugins" folder using code:

Code
            string PluginsPath = Path.Combine(Application.StartupPath, "Plugins");
            if (!File.Exists(Path.Combine(PluginsPath, "mb_3DBee.dll")))
                PluginsPath = Path.Combine(MbApiInterface.Setting_GetPersistentStoragePath(), "Plugins");

and, then, get "3DBee" folder:

Code
            string PathTo3DBeeFolder = Path.Combine(PluginsPath , "3DBee");
Title: Re: 3DBee (Cover Flow) Plugin
Post by: boroda on January 27, 2023, 06:29:12 PM
BoringName, i've installed plugin, it's initialized without exceptions, i can access plugin settings in mb prefs, can add plugin panel to mb main view, but plugin panel is empty (nothing is displayed, but solid background color), and right-clicking on panel does nothing. there is nothing in mb log.

win 10 22h2, portable mb 3.5.8425 P
Title: Re: 3DBee (Cover Flow) Plugin
Post by: BoringName on January 27, 2023, 08:10:20 PM

At the moment I have three suggestions:


I was planning on using version numbers. I will include a readme file, that's a good idea. You can put 3DBee in the floating window panel.

BoringName, i've installed plugin, it's initialized without exceptions, i can access plugin settings in mb prefs, can add plugin panel to mb main view, but plugin panel is empty (nothing is displayed, but solid background color), and right-clicking on panel does nothing. there is nothing in mb log.

win 10 22h2, portable mb 3.5.8425 P

I'll have a play around with the add plugin function and see if I can simplify the install process.

I hadn't tested it on the portable version. I got it working but there is a strange quirk that I'm not sure of the cause. I'm going to assume you have the DLL's and 3DBee folder in the right place.

The issue I found is the settings file located at MusicBee\AppData\3DBee\mb_3DBee.Settings.xml was created but wasn't getting saved to. The fact it gets created tells me the paths are correct so I'm not sure what's happening there. Maybe the portable version doesn't trigger the closing event I use to trigger a save.....

Anyway, the solution is to go to Edit Preferences->Plugins-> configure button for 3DBee, click the save settings button. Remove 3DBee from any panels. Restart musicbee, add 3DBee to a panel, it should come up but if it doesn't give Musicbee another restart and it should work then.

edit: The other cause of a blank window is not being able to find the 3DBee\skins folder. I need to change it to display a message if it can't find it. Based on my install you need to make sure the following folder exists and contains at least the Coverflow folder. MusicBee\AppData\3DBee\skin

For anyone else reading this, that last statement is for the portable version.

Probably worth noting I have not tested it in the microsoft store version and I have no plans to support that version even if it could be installed on it.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: phred on January 27, 2023, 08:29:44 PM
I was planning on using version numbers. I will include a readme file, that's a good idea. You can put 3DBee in the floating window panel.
Thanks and you're welcome for the good idea.

Suggestion for the configure window --- either add a third button at the bottom to "Close" or change the "Save" button to "Save & Close". Right now there's an extra step to mouse up the the 'X' to close the window.

I was so anxious to test this that I overlooked the option to put it in a floating window. Which I've now done. While the window is resizable, the actual cover flow is not:
(http://i.imgur.com/SA2HUz2l.jpg) (https://i.imgur.com/SA2HUz2.jpg)

(http://i.imgur.com/qTJKs95l.jpg) (https://i.imgur.com/qTJKs95.jpg)
Title: Re: 3DBee (Cover Flow) Plugin
Post by: MotleyG on January 27, 2023, 08:32:13 PM
I've tried to install it with the method you posted in #1, and using the "AddPlugin" option on the preferences. Both pop up an error that show "Unable to initialise plugin: MB_3DBEE.DLL" "Exception has been thrown by the target of an invocation." I'm happy to check into this, as this looks like the plugin I would use the most. Love the design!

Win10 Pro, 22H2, 64-bit
MB ver 3.5.8421
Title: Re: 3DBee (Cover Flow) Plugin
Post by: BoringName on January 27, 2023, 08:38:29 PM

Suggestion for the configure window --- either add a third button at the bottom to "Close" or change the "Save" button to "Save & Close". Right now there's an extra step to mouse up the the 'X' to close the window.

I was so anxious to test this that I overlooked the option to put it in a floating window. Which I've now done. While the window is resizable, the actual cover flow is not:

Will do on the save and close.

Yeah, the resizing is quite messed up. I tried a lot of different things to sort that out and hit a wall every time. I think it's a quirk of how the plugin is hosted inside the panel, its a control, inside a form inside a panel. I put a height setting in the config but it just ended up causing graphical issues like you are experiencing but worse...

The solution is to place 3DBee in the bottom of the main panel under the files element. When it's in this spot you can resize it to whatever height you want. Then move it back to the floating window and it will maintain that height. I'll keep working on a better solution but it's one of those initial setup things you shouldn't have to worry about once you have it where you like it.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: BoringName on January 27, 2023, 08:45:54 PM
"Unable to initialise plugin: MB_3DBEE.DLL" "Exception has been thrown by the target of an invocation."

Can you go to the Musicbee menu->Help->Support->View Error Log and paste the last error in here for me to have a look at please.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: kaivsdoom on January 27, 2023, 08:58:24 PM
Hello..this is a great plugin Boring Name but i don't get cover art no matter what i click in settings.the folders are all in the right place i hope as the plugin works so far.when i try cover in to load the memory then this happens....

MusicBee v3.5.8402.19544D  (Win10.0), 27 Jan 2023 21:49:

System.Reflection.TargetInvocationException: Ein Aufrufziel hat einen Ausnahmefehler verursacht. ---> System.OutOfMemoryException: Nicht genügend Arbeitsspeicher.
   bei System.Drawing.Bitmap.LockBits(Rectangle rect, ImageLockMode flags, PixelFormat format, BitmapData bitmapData)
   bei System.Drawing.Bitmap.LockBits(Rectangle rect, ImageLockMode flags, PixelFormat format)
   bei MusicBeePlugin._3DBee.loadAlbumTexture(Int32 index)
   bei MusicBeePlugin._3DBee.checkTextureAlbum()
   bei MusicBeePlugin._3DBee.OpenGLControl_OpenGLDraw(Object sender, OpenGLRoutedEventArgs args)
   --- Ende der internen Ausnahmestapelüberwachung ---
   bei System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
   bei System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
   bei System.Delegate.DynamicInvokeImpl(Object[] args)
   bei System.Windows.RoutedEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
   bei System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
   bei System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
   bei System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
   bei System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
   bei System.Windows.UIElement.RaiseEvent(RoutedEventArgs e)
   bei SharpGL.WPF.OpenGLControl.DoRender()
   bei MusicBeePlugin._3DBee.RenderEventProcessor(Object myObject, EventArgs myEventArgs)
   bei System.Windows.Forms.Timer.OnTick(EventArgs e)
   bei System.Windows.Forms.Timer.TimerNativeWindow.WndProc(Message& m)
   bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

do i need to change anything else in the settings?

sorry for the creepy google english  :)
Title: Re: 3DBee (Cover Flow) Plugin
Post by: MotleyG on January 27, 2023, 09:07:33 PM
"Unable to initialise plugin: MB_3DBEE.DLL" "Exception has been thrown by the target of an invocation."

Can you go to the Musicbee menu->Help->Support->View Error Log and paste the last error in here for me to have a look at please.

Thanks for looking at this for me, see the log details from this afternoon (I changed my user name to xxx in red)
2023-01-27 4:04:51 PM - 10.0.19045.0 - 3.5.8421.33583D - System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\Users\xxx\AppData\Roaming\MusicBee\3DBee\mb_3DBee.Settings.xml'.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)
   at System.IO.File.Open(String path, FileMode mode, FileAccess access, FileShare share)
   at MusicBeePlugin.Plugin.Initialise(IntPtr apiInterfacePtr)
   --- End of inner exception stack trace ---
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
   at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
   at #=zBcACJC4dkModftTk8Q==..ctor(#=z6HnZ1kWEuOAZAYzFlQ== #=z8L37Yx8=)


BTW - this folder and file don't currently exist in the Appdata location under MusicBee - 3DBee\mb_3DBee.Settings.xml


EDIT: Scratch this, I obviously can't read directions on a Friday. I had placed the 3DBee folder in the standard MusicBee location, not the one in the AppData as directed in you instructions. It is working now, apologies for the false alarm. :-[
Title: Re: 3DBee (Cover Flow) Plugin
Post by: phred on January 27, 2023, 09:26:29 PM
Will do on the save and close.
Wonderful. Thanks.

Quote
The solution is to place 3DBee in the bottom of the main panel under the files element. When it's in this spot you can resize it to whatever height you want. Then move it back to the floating window and it will maintain that height. I'll keep working on a better solution but it's one of those initial setup things you shouldn't have to worry about once you have it where you like it.
Hmmm ... I moved it to under the files element and got this when I clicked 'apply' on the panel config window
Code
MusicBee v3.5.8421.33583P  (Win10.0), 27 Jan 2023 16:22:

System.ObjectDisposedException: Cannot access a disposed object.
Object name: '#=zTIe$tYAQ7GzewPdfgw=='.
   at System.Windows.Forms.Control.CreateHandle()
   at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
   at System.Windows.Forms.Control.CreateControl()
   at System.Windows.Forms.Control.ControlCollection.Add(Control value)
   at System.Windows.Forms.Form.ControlCollection.Add(Control value)
   at #=zKZ96b4YWUKV1GzsJaSDll9U=.#=zZij2wBs=(Control #=z3K_DWXQ=)
   at #=zRk8fiPKwlZmx306m1hfZeHQ=.#=zZij2wBs=(Control #=z3K_DWXQ=)
   at #=zWIZyVUuxNLL39$ggm5ULXcz19Z0b.#=zQtANMPOJGQG6(#=z8ngFV4Y$SfaA #=zFJQeAsc=, Boolean #=zxvVdQgcTJzjlymvisw==)
   at #=zWIZyVUuxNLL39$ggm5ULXcz19Z0b.#=z_zwOxmrpkUpH(Boolean #=zYMRCvcS5_Gzu2Btk3A==, Boolean #=zflp2hW$6es2a)
   at #=zWIZyVUuxNLL39$ggm5ULXcz19Z0b.#=zqYqKD9b1lshIwA9lZ0PrsEjG$RN8.#=zoDSas5JHtkxF.#=zy_nMy3ExXTMz()
   at #=zWIZyVUuxNLL39$ggm5ULXcz19Z0b.#=zqYqKD9b1lshIwA9lZ0PrsEjG$RN8.#=zoDSas5JHtkxF.#=z$R64O5y0gUKE(Object #=z3QW$Uaw=, EventArgs #=zDE4WdZg=)
   at System.Windows.Forms.Control.OnClick(EventArgs e)
   at #=ztQ3K7RlYqttvB7xsbsczRjY=.OnClick(EventArgs #=zDE4WdZg=)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

When I tried a second time it appeared under the files element. The two-headed 'resize' arrow shows at the bottom of the 3DBee panel, but not at the top. Moving the panel back to floating and trying again threw the same error and on the next attempt it appeared where wanted. But still couldn't move the top edge.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: BoringName on January 27, 2023, 09:29:21 PM
Hello..this is a great plugin Boring Name but i don't get cover art no matter what i click in settings.the folders are all in the right place i hope as the plugin works so far.when i try cover in to load the memory then this happens....

The load into memory setting is a bit risky. On my system it will use about 200-300mb of ram while it loads the covers into the GPU memory. it will use more if your artwork is a higher res. I could lower the memory usage here but it will make it slower.... I also wasn't able to test what happens if the GPU memory fills up so that might be an issue too. Just leave that disabled for now until we figure out why the covers are not showing.

Make sure the 3DBee folder is located in
C:\users\<yourusername>\AppData\Roaming\Musicbee
Change the drive letter and <yourusername> to whatever your system is set to.

EDIT: Scratch this, I obviously can't read directions on a Friday. I had placed the 3DBee folder in the standard MusicBee location, not the one in the AppData as directed in you instructions. It is working now, apologies for the false alarm. :-[

All good, I really should handle errors better.....
Title: Re: 3DBee (Cover Flow) Plugin
Post by: BoringName on January 27, 2023, 09:37:15 PM
When I tried a second time it appeared under the files element. The two-headed 'resize' arrow shows at the bottom of the 3DBee panel, but not at the top. Moving the panel back to floating and trying again threw the same error and on the next attempt it appeared where wanted. But still couldn't move the top edge.

Hmm. that seems to be an issue moving it from the floating window to somewhere else. If you remove it from the floating window, click apply, then move it to under the files element it will work without error. Once it's in the bottom of the main panel you should be able to adjust the height, if not try restarting musicbee. If that doesn't work I'm out of ideas, I have 2 test systems here and it's working on both installed versions and the portable version I setup this morning...

There is definitely an issue when you move 3DBee around different panels constantly. I couldn't find the cause. You will see the artist and album fonts will go janky or disappear. Once musicbee is restarted it works fine again. I'm hoping when I re-code all the font handling that it fixes it. It's only an issue when moving the panel around, once its where you want it everything should work.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: phred on January 27, 2023, 09:38:15 PM
When I tried a second time it appeared under the files element. The two-headed 'resize' arrow shows at the bottom of the 3DBee panel, but not at the top. Moving the panel back to floating and trying again threw the same error and on the next attempt it appeared where wanted. But still couldn't move the top edge.
Ok ... when I shut down MB and restarted, I still get the error reported previously when moving 3DBee to the main panel. After second attempt there was no error, and the top resize cursor appeared. I was able to increase the height, and put it in a floating panel.

Thanks again
Title: Re: 3DBee (Cover Flow) Plugin
Post by: BoringName on January 27, 2023, 09:51:35 PM

Ok ... when I shut down MB and restarted, I still get the error reported previously when moving 3DBee to the main panel. After second attempt there was no error, and the top resize cursor appeared. I was able to increase the height, and put it in a floating panel.

Thanks again

Sorry it was so complicated. I really don't know why the panels seem to behave differently in terms of sizing. I'm not sure if it's an issue with my code, an issue with Musicbee or just because of the way I nested the elements to make it work.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: MotleyG on January 27, 2023, 09:54:10 PM
Got it working, it looks really awesome. I put it above the Playing Tracks list on the left for now. Not sure if that is where it will stay though. Thanks for this!
(https://i.imgur.com/94xDqpo.jpg)
Title: Re: 3DBee (Cover Flow) Plugin
Post by: BoringName on January 27, 2023, 11:08:20 PM
New version 1.1 available for download on the addon page.
- Fixed a bug when a radio station is queued.
- Set the configure form to auto close after clicking save or reset defaults.
- Added a version number to the bottom of the configuration form.
- added readme.txt file to the zip file.
- Better handling of missing folders and notifies the user where the persistent storage folder is located if the skins folder is missing.
- Fixed a bug with the portable version not saving the settings file initially.

I'm trying to be careful to not rush things out. Hopefully these changes don't break anything else...
Title: Re: 3DBee (Cover Flow) Plugin
Post by: phred on January 27, 2023, 11:33:56 PM
Nice progress, BoringName.

Using 1.1 I notice that when restarting MB, the choice of Flow does not remain consistent. I'm using Circle for Flow and  Vista Classic for skin. When I close and then reopen MB, Vista Classic for skin is still there, but the Flow is now set to Vista. I would think the user's selection for those two options would remain persistent between restarts.

Thanks.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: BoringName on January 27, 2023, 11:58:30 PM
Nice progress, BoringName.

Using 1.1 I notice that when restarting MB, the choice of Flow does not remain consistent. I'm using Circle for Flow and  Vista Classic for skin. When I close and then reopen MB, Vista Classic for skin is still there, but the Flow is now set to Vista. I would think the user's selection for those two options would remain persistent between restarts.

Thanks.

Go the skin folder you copied over during install. It's inside the 3DBee folder.
3DBee\skin\Vista Classic and open the skin.ini file in this folder.
Change
Code
favoriteplugin = Vista
to
Code
favoriteplugin = Circle

edit: I know its a bit janky when switching skins changes the flow automatically but I envisioned some people may setup multiple skins and want different flows for each. Maybe different users or just change based on their mood/day of the week or however they happen to be using musicbee that day..So it's less clicks for them once it's setup correctly. And it's easily solved by just setting the favoriteplugin field in the ini file.

I do have plans to make the skin configuration editable in the UI instead of having to edit the ini file manually.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: phred on January 28, 2023, 03:17:42 AM

Go the skin folder you copied over during install. It's inside the 3DBee folder.
3DBee\skin\Vista Classic and open the skin.ini file in this folder.
Change
favoriteplugin = Vista
to
favoriteplugin = Circle
That worked. Thank you.

Now for a wish list item ... I have over 3100 albums (over 42,000 tracks) in my library. I certainly understand the drawbacks of loading the entire library into 3DBee. I currently have it set to the default 50. But since my albums/tracks are often played on shuffle, it takes a bit of time for the flow to catch up with the playing track. I don't know if it's possible, but could there be an option to buffer the tracks in a playlist? Once one track in a playlist is played, the rest of artwork in that playlist gets buffered. My thinking for this is that it will still take less time to flow from image to image than it currently does with a buffer of 50 because the 50 that are buffered have a less likely chance of being the next track played. Again, I don't know if something like this is possible so I'm just throwing it out there.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: BoringName on January 28, 2023, 07:20:21 AM
Now for a wish list item ... I have over 3100 albums (over 42,000 tracks) in my library. I certainly understand the drawbacks of loading the entire library into 3DBee. I currently have it set to the default 50. But since my albums/tracks are often played on shuffle, it takes a bit of time for the flow to catch up with the playing track. I don't know if it's possible, but could there be an option to buffer the tracks in a playlist?

Buffering a playlist is a great idea. I've added that to the list.

There is no easy way to handle that size collection. I had considered setting up some kind of blurred animation where it immediately jumps to within range of the selected album instead of the prolonged scrolling that occurs. So you still get the animation effect as it slows down and see the covers leading up to the selected album but won't have the prolonged scrolling.  I think that will be a better option for large collections and shouldn't be too hard to implement.

I do need to optimize the openGL code as it's slower than it should be but even if it was capable of loading all the covers while scrolling to the next album, with a collection that size you would be thrashing the HDD just to see a blurry cover speed by, it would be pointless.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: kaivsdoom on January 28, 2023, 11:36:16 AM
Please help me, I can't go any further.
it doesn't seem to be working for me. it looks like 3DBee isn't getting access to the covers. Everything else is working.
Attached are screenshots...
Thanks so much :)

https://imgur.com/a/LwzZHCQ
Title: Re: 3DBee (Cover Flow) Plugin
Post by: phred on January 28, 2023, 01:20:35 PM
Buffering a playlist is a great idea. I've added that to the list.
Great! Adding to this, in addition to buffering the playlist, can it also buffer the current Now Playing list? My thinking is that is another way to speed up the caching/buffering of the "available" artwork.

There is no easy way to handle that size collection. I had considered setting up some kind of blurred animation where it immediately jumps to within range of the selected album instead of the prolonged scrolling that occurs. So you still get the animation effect as it slows down and see the covers leading up to the selected album but won't have the prolonged scrolling.  I think that will be a better option for large collections and shouldn't be too hard to implement.
I think this is a brilliant idea. If you could implement this, then you wouldn't need to to buffer the Play/Now Playing Lists as I suggested.

I certainly don't have one of the larger collection among MB users. I've seen someone report have over 600,000 tracks. (There's a thread for this if you're interested.) I do offer up my collection to help you test my suggests if you'd like. Feel free to PM beta versions of the buffering changes and I'll report back.

One other Wishlist item - when 3DBee starts it's always on the first (alphabetical) album in the collection. Can it either pick a cover randomly, or show the artwork for the last album/track played.

Now, on to what might possibly be a bug. Or a need for improvement. I have a number of compilation albums. When playing one of them, or even one track from a compilation, 3DBee shows the artist of the first track even if that's not the track that's playing. Perhaps use Album Artist instead of Artist so in a compilation case, it will show "Various Artists" or whatever the user has tagged the Album Artist.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: hiccup on January 28, 2023, 03:27:51 PM
1.
I haven't tested it thoroughly, but am I correct to think that it will always show all albums in a library?
If so, wouldn't it be better if it followed any filtering in place?

2.
About having it matching a chosen skin:
Would it be an option to have the background adapt to the panel background of a skin?
(I think I used transparency for my 'classical embedded' Theater Mode for that)
And if the fonts would also follow the font colour of the active skin, I think it would be looking great in most cases.
(but that's surely a personal matter, I myself don't care much about funny or stylised backgrounds or reflections)

3.
While the image is in motion I am noticing some hard borders around the albumart. (I'm sure there is a better description than 'hard borders' for that)
Would anti-aliasing be an option to improve on that a bit?

4.
Impressive work and dedication!
Title: Re: 3DBee (Cover Flow) Plugin
Post by: phred on January 28, 2023, 06:02:25 PM
1.
I haven't tested it thoroughly, but am I correct to think that it will always show all albums in a library?
If so, wouldn't it be better if it followed any filtering in place?
Yes, this could go along with my suggestion to only cache the current playlist and the now playing list.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: boroda on January 28, 2023, 06:08:11 PM
BoringName, i've installed plugin, it's initialized without exceptions, i can access plugin settings in mb prefs, can add plugin panel to mb main view, but plugin panel is empty (nothing is displayed, but solid background color), and right-clicking on panel does nothing. there is nothing in mb log.

win 10 22h2, portable mb 3.5.8425 P

I'll have a play around with the add plugin function and see if I can simplify the install process.

I hadn't tested it on the portable version. I got it working but there is a strange quirk that I'm not sure of the cause. I'm going to assume you have the DLL's and 3DBee folder in the right place.

The issue I found is the settings file located at MusicBee\AppData\3DBee\mb_3DBee.Settings.xml was created but wasn't getting saved to. The fact it gets created tells me the paths are correct so I'm not sure what's happening there. Maybe the portable version doesn't trigger the closing event I use to trigger a save.....

Anyway, the solution is to go to Edit Preferences->Plugins-> configure button for 3DBee, click the save settings button. Remove 3DBee from any panels. Restart musicbee, add 3DBee to a panel, it should come up but if it doesn't give Musicbee another restart and it should work then.

edit: The other cause of a blank window is not being able to find the 3DBee\skins folder. I need to change it to display a message if it can't find it. Based on my install you need to make sure the following folder exists and contains at least the Coverflow folder. MusicBee\AppData\3DBee\skin
plugin successfully writes file "MusicBee\AppData\3DBee\mb_3DBee.Settings.xml". folder "MusicBee\AppData\3DBee\skin" is in place. all 4 skins are located in this folder. i've updated plugin to version 1.1, removed plugin panel, restarted mb, and added plugin panel again. nothing helps.

interesting that plugin floating panel title shows currently playing track name (and this track name in panel title is changed on playing another track). but panel content is always empty.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: BoringName on January 28, 2023, 09:40:06 PM
Attached are screenshots...

I've never seen that particular problem in all my testing. Usually it's the artist/album info or scrollbar that disappear, not the artwork.
If you haven't already, restart musicbee.
Go to the musicbee menu->Help->Support->View Error Log and see if there is a recent error. If there is paste it here.
What format are your artwork files?

Great! Adding to this.

Buffering the queue list should be possible.
Keeping track of the last displayed cover is on the list for the next startup.
Handling various artist albums better is on the list. I think I will just revert to using album artist, I believe if that field is blank Musicbee will return the artist by default anyway. That seems to be the case when you add the "album artist" column to the files element.

1.
I haven't tested it thoroughly, but am I correct to think that it will always show all albums in a library?
If so, wouldn't it be better if it followed any filtering in place?
That's how it currently behaves. Obeying any filtering in place is on the to do list.
2.
Would it be an option to have the background adapt to the panel background of a skin?
And if the fonts would also follow the font colour of the active skin,
The context menu background and font should already follow the colour of the active skin. Although I haven't tested the font out. It's set to follow the foreground colour of the TrackandArtistPanel which I think sets the font colour. I could add an option in the skin.ini file to create a background that matches the current skin.
3.
While the image is in motion I am noticing some hard borders around the albumart. (I'm sure there is a better description than 'hard borders' for that)
Would anti-aliasing be an option to improve on that a bit?
There is some anti-aliasing done with OpenGL settings that I have on but it's not that great. Higher resolution artwork does reduce the jaggies. There is methods I can implement to do my own but it's not trivial (at least not for me) so it's going to sit in the too hard basket for a while.
4.
Impressive work and dedication!

Thanks! It took a while to get there but I was pretty happy when that first screen loaded up successfully in Musicbee.

plugin successfully writes file "MusicBee\AppData\3DBee\mb_3DBee.Settings.xml". folder "MusicBee\AppData\3DBee\skin" is in place. all 4 skins are located in this folder. i've updated plugin to version 1.1, removed plugin panel, restarted mb, and added plugin panel again. nothing helps.

interesting that plugin floating panel title shows currently playing track name (and this track name in panel title is changed on playing another track). but panel content is always empty.

It's a strange one. Is there anything in the error log?

Also the panel title on the floating panel doesn't show the currently playing track for me. It just says 3DBee all the time for me.  I was wrong, it does change for me but it still could be a conflicting plugin so it's worth checking that out.

That may be Kaivsdoom's problem also.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: kaivsdoom on January 28, 2023, 10:04:00 PM
hello. I had no error log so far.
Only after I set up the music bee again out of desperation did an error occur at the start...

MusicBee v3.5.8402.19544D  (Win10.0), 28 Jan 2023 16:11:

System.Reflection.TargetInvocationException: Ein Aufrufziel hat einen Ausnahmefehler verursacht. ---> System.NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
   bei SharpGL.OpenGL.DrawText(Int32 x, Int32 y, Single r, Single g, Single b, String faceName, Single fontSize, String text)
   bei MusicBeePlugin._3DBee.drawInfo()
   bei MusicBeePlugin._3DBee.OpenGLControl_OpenGLDraw(Object sender, OpenGLRoutedEventArgs args)
   --- Ende der internen Ausnahmestapelüberwachung ---
   bei System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
   bei System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
   bei System.Delegate.DynamicInvokeImpl(Object[] args)
   bei System.Windows.RoutedEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
   bei System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
   bei System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
   bei System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
   bei System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
   bei System.Windows.UIElement.RaiseEvent(RoutedEventArgs e)
   bei SharpGL.WPF.OpenGLControl.DoRender()
   bei MusicBeePlugin._3DBee.RenderEventProcessor(Object myObject, EventArgs myEventArgs)
   bei System.Windows.Forms.Timer.OnTick(EventArgs e)
   bei System.Windows.Forms.Timer.TimerNativeWindow.WndProc(Message& m)
   bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
Title: Re: 3DBee (Cover Flow) Plugin
Post by: phred on January 28, 2023, 11:03:09 PM
Buffering the queue list should be possible.
Keeping track of the last displayed cover is on the list for the next startup.
Handling various artist albums better is on the list. I think I will just revert to using album artist, I believe if that field is blank Musicbee will return the artist by default anyway. That seems to be the case when you add the "album artist" column to the files element.
Yes, when there is no <album artist> tag MB assumes <album artist> equals <artist>. So if you change 3DBee to show <album artist> if a user didn't use that tag, MB would show <artist>. I can only assume 3DBee would see it also.

Looking forward to the upcoming changes/improvements.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: boroda on January 29, 2023, 02:03:38 AM
Yes, when there is no <album artist> tag MB assumes <album artist> equals <artist>. So if you change 3DBee to show <album artist> if a user didn't use that tag, MB would show <artist>. I can only assume 3DBee would see it also.
more exactly, there are TWO programmatically available tags in MusicBeeInterface.cs:

Code
        public enum MetaDataType
        {
             ...
              AlbumArtist = 31,        // displayed album artist
              AlbumArtistRaw = 34,     // stored album artist
              ...
         }
pluign just should always use tag AlbumArtist = 31.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: boroda on January 29, 2023, 02:05:49 AM
plugin successfully writes file "MusicBee\AppData\3DBee\mb_3DBee.Settings.xml". folder "MusicBee\AppData\3DBee\skin" is in place. all 4 skins are located in this folder. i've updated plugin to version 1.1, removed plugin panel, restarted mb, and added plugin panel again. nothing helps.

interesting that plugin floating panel title shows currently playing track name (and this track name in panel title is changed on playing another track). but panel content is always empty.

It's a strange one. Is there anything in the error log?

...but it still could be a conflicting plugin so it's worth checking that out.
nothing in error log. i'll try to turn off installed plugins one by one to see if it helps.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: boroda on January 29, 2023, 02:14:35 AM
i've noticed a small bug: floating panel is shown on windows taskbar. there is a form property "show on taskbar" in VS form editor.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: boroda on January 29, 2023, 02:22:58 AM
...but it still could be a conflicting plugin so it's worth checking that out.
i'll try to turn off installed plugins one by one to see if it helps.
i have turned off all plugins except for 3DBee, but nothing changed.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: BoringName on January 29, 2023, 04:06:12 AM
Version 1.2 available to download
- 3DBee will attempt to navigate to the last selected album on startup.
- 3DBee now uses the album artist field for sorting and the artist name.
- New setting: Animation Threshold. If the selected album minus the current album is greater than this threshold, it will immediately jump to within that threshold and continue scrolling to the selected album. It reduces scrolling considerably on large libraries. If you don't want to use it, just set it to a value higher than the number of albums in your library and it won't have any effect.

I have altered some of the code that may help some people currently having issues. I don't like the chances though....

That's probably the last update for a while. I'm looking at the playlist/now playing caching and that's going to be a bit of work.

If I can find anything that might be causing issues like Boroda has I will get that out straight away though.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: BoringName on January 29, 2023, 04:25:37 AM
i have turned off all plugins except for 3DBee, but nothing changed.

If you install the new version try deleting the XML file before you load it up.

One other thing that I've had happen, if I stuff up the code and cause an error. The plugin will be disabled at startup by Musicbee but the panel it was in will still display with a blank window. It's not until I go into edit preferences-> plugin and hit enable that it gives me an error. And the blank panel will stay there until I fix the issue and enable the plugin or go into arrange panels and click apply.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: phred on January 29, 2023, 04:38:38 AM
Version 1.2 available to download
The plugin download page is still showing v1.1, but v1.2 is downloaded.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: BoringName on January 29, 2023, 04:59:39 AM
The plugin download page is still showing v1.1, but v1.2 is downloaded.

Fixed. Thanks.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: boroda on January 29, 2023, 05:15:54 AM
i've discovered that plugin (at least 1.2) is working fine for me, but only if i delete/rename "skins" folder in "AppData\3DBee" folder. i get error message "Skin Coverflow is not valid! Attempting to recover..." on plugin initialization in this case, but plugin works. what may be the cause?

edit:
i see 2 possible reasons, why coverflow skin (and maybe other skins) doesn't work. skin.ini is not UTF-8 encoded, but contains unicode characters (not only Latin-1 characters). included fonts don't contain cyrillic letters. i.e. the problem is my windows regional settings.

maybe, it's some other problem.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: BoringName on January 29, 2023, 05:33:28 AM
Patched version of musicbee that allows the panel to be resized when it's placed above the files element in the main panel - https://getmusicbee.com/patches/MusicBee35_Patched.zip

i've discovered that plugin (at least 1.2) is working fine for me, but only if i delete/rename "skins" folder in "AppData\3DBee" folder. i get error message "Skin Coverflow is not valid! Attempting to recover..." on plugin initialization in this case, but plugin works. what may be the cause?

The plot thickens...

If you put the skins folder back and restart music bee, what happens?

That's a strange one. It must have the right path because it knows when the folder is missing. Maybe something got corrupted in there somewhere. Try getting the skin folder out of the current version zip file and see if that one works. There is not much in them, it's just an ini file and some images. I don't know why it wouldn't be working.

edit: Actually just try putting the Coverflow skin folder first and see if that works. appdata\3DBee\skin\Coverflow
Title: Re: 3DBee (Cover Flow) Plugin
Post by: boroda on January 29, 2023, 05:38:32 AM
it's not the problem of mb path. i've just copied mb to "D:\MusicBee", and still have the same behavior.

read my previous post. i was typing it, when you've answered.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: BoringName on January 29, 2023, 05:50:33 AM

edit:
i see 2 possible reasons, why coverflow skin (and maybe other skins) doesn't work. skin.ini is not UTF-8 encoded, but contains unicode characters (not only Latin-1 characters). included fonts don't contain cyrillic letters. i.e. the problem is my windows regional settings.

maybe, it's some other problem.

That's probably going to be it. Most of those ini files are from the original author of coverjuke, I've edited them a bit but yeah.

If fonts are the issue, you can list whatever fonts you want in the ini files. You just have to put the applicable TTF font files in the font folder of that skin. If you edit the 3DBee xml file and change useMbDefaultFont to true it won't use those fonts for drawing but it will try to load them in the plugin initially so it probably won't bypass the problem.

I do have a plan to change how fonts are handled but it's going to be a while.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: boroda on January 29, 2023, 06:13:11 AM
well, fonts don't arise the issues. i'm not sure which fonts are actually used by plugin for cyrillic letters, but replacing provided fonts, by windows unicode fonts doesn't change anything. i'm still thinking that skin.ini files should use utf-8 encoding instead of ansi, but it's also, not my problem at the moment.

the real problem is last 3 lines in skin.ini (at least for coverflow skin). i've commented them:

Code
#movehorizscene = 0.000000
#movevertiscene = 0.200000
#zoomscene = 0.000000

and plugin is working now fine and without any error messages. if i uncomment any of these 3 lines, the plugin (silently, without error messages, and without writing anything to mb error log) displays an empty panel.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: BoringName on January 29, 2023, 07:24:54 AM
well, fonts don't arise the issues. i'm not sure which fonts are actually used by plugin for cyrillic letters, but replacing provided fonts, by windows unicode fonts doesn't change anything. i'm still thinking that skin.ini files should use utf-8 encoding instead of ansi, but it's also, not my problem at the moment.

the real problem is last 3 lines in skin.ini (at least for coverflow skin). i've commented them:

Code
]#movehorizscene = 0.000000
#movevertiscene = 0.200000
#zoomscene = 0.000000

There is something wrong with the quick reply box on this forum. Whenever I try and use it my post just disappears to the ether. I have to click the reply button first and post that way.

and plugin is working now fine and without any error messages. if i uncomment any of these 3 lines, the plugin (silently, without error messages, and without writing anything to mb error log) displays an empty panel.

Those 3 settings adjust the position of the flow within the panel. So yours will be positioned slightly lower with that movevertiscene commented out.

Those 3 settings get read in as a string and then converted to a float. They are the only settings converted to float so something is going wrong there on your machine. What happens if you take away the trailing zeroes so they are just 2 decimal places? It shouldn't make a difference but there must be something odd going on with the conversion.
Code
#movehorizscene = 0.00
#movevertiscene = 0.20
#zoomscene = 0.00

edit: The problem with openGL is you don't know there was an error unless you specifically query it with gl.geterror() constantly. It will just silently shit itself and give you unexpected results. I suspect some weird conversion is happening with the float values causing GL to error but It's strange the actual conversion didn't produce an error. Maybe it's converting it to a float successfully but to a number outside of the range OpenGL is expecting. It's hard for me to test because it works on my machine....
Title: Re: 3DBee (Cover Flow) Plugin
Post by: boroda on January 29, 2023, 07:43:53 AM
i'll test it right now, but i'm already sure that the problem is localized decimal point, which is comma, not dot, for russian localization (and, i suspect, that for many, if not most, european localizations). i'm using the following workaround in my tag tools plugin to read floats always using US notation, independently of windows regional settings:

Code
const char localizedDecimalPoint = (0.5).ToString()[1]; //global declaration
...
//code inside some function
string number = "0.22"; //it's just input example

number = number.Replace('.', localizedDecimalPoint);

float fpNumber = float.Parse(number);
...
Title: Re: 3DBee (Cover Flow) Plugin
Post by: boroda on January 29, 2023, 07:47:45 AM
yes, replacing dots by commas in floats in skin.ini completely solved the problem.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: boroda on January 29, 2023, 07:51:01 AM
it seems that option "Use MusicBee default font" doesn't work. see screenshot below, album artist name in column browser is displayed correctly, but in plugin panel is not:

(https://i.imgur.com/TQFEkoU.png)
Title: Re: 3DBee (Cover Flow) Plugin
Post by: BoringName on January 29, 2023, 08:11:42 AM
yes, replacing dots by commas in floats in skin.ini completely solved the problem.

Well done. I'll see if I can implement your solution for localisation issues.

it seems that option "Use MusicBee default font" doesn't work. see screenshot below, album artist name in column browser is displayed correctly, but in plugin panel is not:

It should using the right font (it does for me). You need to restart musicbee for the change to take effect with that setting. I need to state on the config panel which settings require a restart to take effect.

Also moving 3DBee to different panels can mess up the fonts so a restart is needed to fix it when that happens.

If it isn't any of those issues I suspect its a problem with the drawtext function sharpGL uses to display fonts. Looks like I might have to edit some of SharpGL's source code..... Can you please copy and paste that artist name in here so I can test out the characters on my machine.
Thanks.

Edit: Nevermind, I grabbed them from the bands wikipedia page :) They don't show up properly for me either. I'll see what I can do.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: hiccup on January 29, 2023, 08:31:26 AM
2.
Would it be an option to have the background adapt to the panel background of a skin?
And if the fonts would also follow the font colour of the active skin,
The context menu background and font should already follow the colour of the active skin. Although I haven't tested the font out. It's set to follow the foreground colour of the TrackandArtistPanel which I think sets the font colour. I could add an option in the skin.ini file to create a background that matches the current skin.
It doesn't for me. For my skins it always has a black background (0,0,0) and white text (255,255,255)
Maybe I am overlooking some setting?
Title: Re: 3DBee (Cover Flow) Plugin
Post by: BoringName on January 29, 2023, 10:24:34 AM
It doesn't for me. For my skins it always has a black background (0,0,0) and white text (255,255,255)
Maybe I am overlooking some setting?

The plugin currently grabs the background colour of the skin element SkinTrackAndArtistPanel and uses that for the background of the context menu. The text is always set to white currently. I was going to change that to use the foreground colour of the panel which should be the font colour but haven't done it yet.

So because everything always has to be hard - I altered the source code of SharpGL and recompiled it....
SharpGL.dll (https://www.mediafire.com/file/qbb5j1ryl998ydu/SharpGL.zip/file)

This file is for Boroda. Just save that in the plugin folder. On my system it will display the Prāta Vētra band name correctly from your screenshot, well kind of, it converted the accented characters to a and e but that's better than a bunch of square blocks. Other unicode characters are showing up as question marks. I'm hoping that is just a locale issue in windows and they should display correctly for you. Let me know how that goes.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: hiccup on January 29, 2023, 10:35:24 AM
The plugin currently grabs the background colour of the skin element SkinTrackAndArtistPanel and uses that for the background of the context menu.
I don't know that skinning element, and have no skins that have it.
Are you sure that is the correct name?
Title: Re: 3DBee (Cover Flow) Plugin
Post by: boroda on January 29, 2023, 01:31:43 PM
The context menu background and font should already follow the colour of the active skin. Although I haven't tested the font out. It's set to follow the foreground colour of the TrackandArtistPanel which I think sets the font colour. I could add an option in the skin.ini file to create a background that matches the current skin.
It doesn't for me. For my skins it always has a black background (0,0,0) and white text (255,255,255)
Maybe I am overlooking some setting?
context menu of panel follows mb skin colors for me.

-------------

BoringName, i didn't understand what does the option "use musicbee foreground color for progress bar"? what is "progress bar"? scrollbar under cover-flow is determined by skin, not by this setting.

-------------

there is a problem: album artist/album name are not shown at all, if they are too long to fit the width of the plugin panel (i'm now using plugin panel in mb right panel, above track info, right panel is not very wide). not sure, maybe truncate them in this case, appending "..." to truncated text?

-------------

font is very pixelated. can this be somehow fixed? i think just rendering text using current dpi could be sufficient, antialiasing may be not required.

-------------
switching to another library raises this exception (and crashes mb):


MusicBee v3.5.8429.28833P  (Win10.0), 29 янв 2023 16:00:

System.ArgumentOutOfRangeException: Индекс за пределами диапазона. Индекс должен быть положительным числом, а его размер не должен превышать размер коллекции.
Имя параметра: index
   в System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource)
   в System.Collections.Generic.List`1.get_Item(Int32 index)
   в MusicBeePlugin.AlbumTextures.threadAlbumTexture()
   в System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   в System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   в System.Threading.ThreadHelper.ThreadStart()


it's impossible to switch library when plugin is enabled. mb library remains unchanged on mb restart ater crash.

-----------------

and finally great news!

new SharpGL.dll has completely fixed all issues with Russian text (current windows locale), previously russian text was displayed as some mix of question marks, latin letters and numbers. but diacritic marks are simply removed (for some european characters, russian language doesn't use diacritics). maybe it's possible to leave them if russian letters are now shown properly - i hope that now any unicode text can be handled, no?
Title: Re: 3DBee (Cover Flow) Plugin
Post by: boroda on January 29, 2023, 01:44:55 PM
BoringName, here is example of russian (album) artist, just in case if you want to test displaying russian tags using not russian windows locale:

Веня д'ркин
Title: Re: 3DBee (Cover Flow) Plugin
Post by: phred on January 29, 2023, 03:08:36 PM
Using 1.2 I needed to temporarily disable 3DBee to test for a conflict with something else. (Preferences > Plugins > 3DBee > disable.) Closed and restarted MB, did my tests, enabled 3DBee and it was gone from the panel arrangement. I feel it should remain persistent. The settings (floating panel, location of panel, last album played, etc. were all persistent. It just was no longer enabled as a panel.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: hiccup on January 29, 2023, 04:38:24 PM
It doesn't for me. For my skins it always has a black background (0,0,0) and white text (255,255,255)
Maybe I am overlooking some setting?
context menu of panel follows mb skin colors for me.
So you are not getting a pitch black background, irrespective of the skin you are using?
(https://i.imgur.com/2PjIyeDm.jpg) (https://i.imgur.com/2PjIyeD.png)

About the ragged font, perhaps activating cleartype (and/or respecting Windows' settings for it) would solve that?
Title: Re: 3DBee (Cover Flow) Plugin
Post by: BoringName on January 29, 2023, 09:27:18 PM
I don't know that skinning element, and have no skins that have it.
Are you sure that is the correct name?

The musicbee api has the following elements listed that I can grab the background, border and foreground colours. I tried different elements but they all came back with the same colours on my machine so I just went with the trackandartist panel.
SkinSubPanel
SkinInputControl
SkinInputPanel
SkinInputPanelLabel
SkinTrackAndArtistPanel

BoringName, i didn't understand what does the option "use musicbee foreground color for progress bar"? what is "progress bar"? scrollbar under cover-flow is determined by skin, not by this setting.

there is a problem: album artist/album name are not shown at all, if they are too long to fit the width of the plugin panel (i'm now using plugin panel in mb right panel, above track info, right panel is not very wide). not sure, maybe truncate them in this case, appending "..." to truncated text?


It's only used if you set the "load all into memory" option. A progress bar will be displayed above the covers showing the loading progress.

Yes, it is set to hide if it won't fit. You could try setting the font size lower but I will look into truncating options.

font is very pixelated. can this be somehow fixed? i think just rendering text using current dpi could be sufficient, antialiasing may be not required.


I had noticed that, I think that is also a SharpGL issue with not scaling fonts properly. I will see if there are ways around it.... I might have to revert to rendering them myself instead of relying on SharpGL's drawtext function.

switching to another library raises this exception (and crashes mb):

That's a big oversight on my part, I'll try and get a fix out for that today.

and finally great news!

I'll look into the diacritic marks. I'm not sure if all unicode characters will be displayed. All this character encoding stuff is new to me so I need to do a bit of research. The fix I did for SharpGL was a solution someone else found, There was a few values set to 255 instead of 256. I think they were basing it on an array of 0-255 having a length of 256 (including the zero) but the way they coded it made them 255 and unicode needs 256.

Using 1.2 I needed to temporarily disable 3DBee to test for a conflict with something else. (Preferences > Plugins > 3DBee > disable.) Closed and restarted MB, did my tests, enabled 3DBee and it was gone from the panel arrangement. I feel it should remain persistent. The settings (floating panel, location of panel, last album played, etc. were all persistent. It just was no longer enabled as a panel.

I'll check it out but I don't think that's something I have any control over. I think musicbee removes the panel if the plugin is disabled.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: BoringName on January 29, 2023, 10:12:14 PM
So it wasn't a complete oversight on my part, it is configured to reload on library change but I hadn't set it to clear one of the lists which is what caused the issue.

I have updated the addon with a fix. It's the same version number. I have also included the new SharpGL.dll
Title: Re: 3DBee (Cover Flow) Plugin
Post by: BoringName on January 30, 2023, 04:16:52 AM

So you are not getting a pitch black background, irrespective of the skin you are using?
(https://i.imgur.com/2PjIyeDm.jpg) (https://i.imgur.com/2PjIyeD.png)

About the ragged font, perhaps activating cleartype (and/or respecting Windows' settings for it) would solve that?

I was specifically talking about the context menu that appears when you right click the 3DBee window. The background can be changed by editing the skin.ini file for that particular skin. It should be in  3DBee\skin\Coverflow\skin.ini
You can place an image file in 3DBee\skin\Coverflow\wallpaper

Lets say you put an image file in there called Background.png

In the ini file change the following line.
backimage = Background.png

There is a bug if you remove all the characters after the = sign so if you don't want to use an image just set this to none or leave the empty space it currently has.

If the backimage setting is blank or set to a file that it can't find in the wallpaper folder, it will revert to to using the following settings to draw the background.
backred=0
backgreen=0
backblue=0

tablered=0
tablegreen=0
tableblue=0

The back colours will be used for the top half of the screen and the table colours will be used for the bottom half. If you set them the same it will be one flat colour. it's currently black because they are all set to zero. If the back and table are set to different colours there will be a gradient transition in the middle of the screen between the 2.
This is what happens if you leave the back colours as zero and set the table colours to 255.
(https://imgur.com/Sg9C5Bf.png)

As for the fonts, I've been down a 3 hour rabbit hole of shit today. I recompiled SharpGL to force it to use the best quality rendering of the fonts and it made zero difference, I tried the Graphics class of System.Drawing and that was just as pixelated although it did do some anti-aliasing with the background that was slightly better. I think my only option is going to be rendering them myself, maybe at double the size and scaling them down. OpenGL does have multisampling but I don't really want to mess around with that yet.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: BoringName on January 30, 2023, 11:30:37 AM
Version 1.3 available for download.
- Fixed a bug that caused the context menu to duplicate when moving the 3DBee element to different panels.
- Set the font colour of the context menu to the current mb skin foreground colour.
- Improved startup. Seems smoother to me and the bug that made the artist/album text disappear when moving the 3DBee element to different panels appears to be fixed.
- Added Boroda's code for localisation of floats when reading the INI files. I can't really test it so hopefully Boroda can give some feedback on that. You will need to change the commas in the INI files back to decimal places or it will fail. Which probably isn't great either but my plan is to get rid of those files.
- Better handling of null values reading the ini files.

I've found a way to make the fonts look better (I think) so that shouldn't be too far away.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: kaivsdoom on January 30, 2023, 05:39:24 PM
Boring Name ,Boroda you guys are awesome!
3DBee works perfectly for me.
Many Thanks   :D 
Title: Re: 3DBee (Cover Flow) Plugin
Post by: kaivsdoom on January 30, 2023, 06:32:14 PM
I have one more question.
When I click on an album in flow, nothing happens.
This works perfectly from the library.
Was that intended, or must something be changed in the settings. Regards
Title: Re: 3DBee (Cover Flow) Plugin
Post by: boroda on January 30, 2023, 07:00:30 PM
- Added Boroda's code for localisation of floats when reading the INI files. I can't really test it so hopefully Boroda can give some feedback on that. You will need to change the commas in the INI files back to decimal places or it will fail. Which probably isn't great either but my plan is to get rid of those files.

no, this workaround must always correctly read US notation (dot) for decimal point, no matter if current windows locale is US or Russian/European, and no matter how floats are written to the file (using US notation or current windows locale notation). if float are written to file using current locale, which uses commas instead of dot, then Replace('.', localizedDecimalPoint) method just won't replace anything, and all be working fine anyway.

sometimes the problem is that float.Parse() method always expects string written using current locale, that's why a workaround is sometimes needed.

note that .ToString() method uses by default (without additional parameters) current user locale.

new plugin version doesn't fix this issue, because i've given you wrong code example. "localizedDecimalPoint" declaration must be of course "static readonly", not "const". expression evaluation after "localizedDecimalPoint" declaration must be done on user's pc (using user current locale), not at compile time.

here is the correct example for reading floats:

Code
static readonly char localizedDecimalPoint = (0.5).ToString()[1]; //global declaration
...
//code inside some function
string number = "0.22"; //it's just input example

number = number.Replace('.', localizedDecimalPoint);

float fpNumber = float.Parse(number);
...

also, i think it's better to write .ini files always using US notation (no matter which is current user locale). you at the moment don't write anything to .ini files by plugin, but if you will be ever, here is the example to always write floats using US notation (no matter if current locale is US or Russian/European):

Code
static readonly char localizedDecimalPoint = (0.5).ToString()[1]; //global declaration
...
//code inside some function
float fpNumber = 0.22f; //it's just output example

string number = fpNumber.ToString().Replace(localizedDecimalPoint, '.');
...
Title: Re: 3DBee (Cover Flow) Plugin
Post by: boroda on January 30, 2023, 07:15:07 PM
I have one more question.
When I click on an album in flow, nothing happens.
This works perfectly from the library.
Was that intended, or must something be changed in the settings. Regards
you are right, i even haven't noticed this. BoringName is it intended, or is it a bug?
Title: Re: 3DBee (Cover Flow) Plugin
Post by: phred on January 30, 2023, 07:17:02 PM
Note that my library is in excess of 40,000 tracks among more than 3,000 albums.

Starting with v1.2 and continuing with 1.3, there is an increased use of RAM and drive activity. I understand that given the size of my library this is to be expected. But it was not noticeable in  1.0 or 1.1. Typically with MB open and playing my RAM usage is around 7%. With the two most recent versions, it's close to 40% and spiking around 60%. This is slowing down everything on the PC. Including editing tracks that are not currently playing nor in the now playing list.

Obviously scanning 40,000 tracks uses RAM. Is there any hope that you'll be able to implement my previous suggest about 3DBee only caching the current playlist or now playing list? I think that should help in my case. For the time being I've had to disable it.

Thanks for considering.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: BoringName on January 31, 2023, 12:09:49 AM
I did set it up as a static char (not a const) but I didn't set it as readonly. I'll double check everything.

Clicking on the album cover within the 3DBee window currently doesn't do anything unless you have mouse scrolling enabled. If that's enabled you can click and drag the covers to make them scroll. It's a bit glitchy though and enabling that setting hides the scrollbar. But there is nothing in place to interact with musicbee yet.

I have plans to add more interaction with music bee. So clicking on an album might change the file list to display all the songs on that album. And add context menu items so you can click on a cover and add that album to the queue.

Initially it was just going to be a visual thing for my partner as I transitioned her away from iTunes and she missed Cover Flow. I said I would try and find a replacement and here we are. She didn't actually use it for anything, she just liked seeing the covers there and have them flip around. So replacing that was my main focus. But I will keep working on adding more functionality.

Starting with v1.2 and continuing with 1.3, there is an increased use of RAM and drive activity.

I'm not sure what could have happened there. My system is using less RAM than it did in version 1.0 but It is quite a small library.

If you have "Load all covers into memory" unchecked, the only other setting that will effect memory is Album Buffer.

This is basically how it works. When you select an album it has an index number and this is what happens (simplified)
All covers in the range of index - nbLeftAlbum and index + nbRightAlbum are read from the HDD and loaded into RAM.
These covers are loaded into GPU memory and then cleared from RAM. Garbage collection decides when to free up that RAM but it should be pretty quick.
Any albums outside the range above plus the album buffer (half left of index and half right of index) value are removed from GPU memory.

And that cycle just repeats constantly as the flow moves around. A few seconds after the flow stops, all CPU activity should stop and any used ram should free up after a few seconds. The garbage collection can be finicky sometimes and doesn't always free up RAM on a regular basis but it gets there in the end.

The other issue that I need to improve is when you edit tag info. Currently this will cause 3DBee to reload everything which is particularly bad if you have a large library and "load all covers into memory" enabled. There is probably a better way to deal with this but if the user changes the album name 3DBee will crap itself if it doesn't reload as I think it causes the UniqueAlbumID to be changed and the old one doesn't exist anymore.
I'd suggest disabling 3DBee if you are planning on making a lot of changes. But if you have "load all covers into memory" disabled it shouldn't cause that much trouble. It will only reload the images near the currently selected album as detailed above.

How much ram usage are we talking about?

Title: Re: 3DBee (Cover Flow) Plugin
Post by: phred on January 31, 2023, 02:19:53 PM
I decided to start the day with a PC reboot. Usually it's on 24/7. I wish I had noted some measurements yesterday. But here's where I am right now.

RAM usage on startup without 3D enabled is around 100mb. With 3D enabled on startup is about 150mb and when in use (flowing to current album cover) RAM is between 180 and 200mb and then settles back to around 150.

I do not have "load all covers into memory" and the album buffer is set for 50. I will also had that hard drive activity is not as prevalent as it was yesterday. Since my music tracks are on a HDD, I can hear it spin, so it was rather noticeable. I'm considering swapping out the HDD for a SSD in the near future. 

The big issue, as you mentioned, it when tag editing is being done. Are you suggesting I load all covers into memory if I'm going to be editing more than one or two albums?

In summary I would say at this point things are no different than with v1.0 and 1.1.

Title: Re: 3DBee (Cover Flow) Plugin
Post by: BoringName on February 01, 2023, 06:35:28 AM
That RAM usage seems fine to me. Yours is slightly more than mine because of the larger library and probably better quality artwork.

Don't enable "load all covers into memory" if you are editing a lot of stuff. Each time you make a change it will load everything in again. Actually with a library your size I would never enable that setting unless you have a good video card with lots of VRAM, 8gb+ would probably be needed. My partners 2000+ albums takes up 6gb. And I'd only do it if I was planning on having MusicBee open for a long time.

Memory usage could probably be better. I'm currently looking at updating all the OpenGL code as it's using very old methods that have been deprecated for a long time. Trying to update it while translating the code to C# would have been too much for me to do at once. That should increase performance quite a bit and I'm hoping it should remove the need for all these workarounds with loading buffers and just loading in a playlist or now playing etc....
Title: Re: 3DBee (Cover Flow) Plugin
Post by: BoringName on February 01, 2023, 10:54:39 AM
Actually it looks like there is a memory leak, I'll see if I can fix it up.

edit: actually no, it's one I just made while testing something out....as you were.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: phred on February 01, 2023, 02:25:57 PM
Don't enable "load all covers into memory" if you are editing a lot of stuff. Each time you make a change it will load everything in again.
I never had it enabled, and don't plan on enabling it. Not even for testing.

Thanks.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: BoringName on February 05, 2023, 08:05:48 AM
Version 1.4 available for download.
- Tried another method for loading localized floats from ini files. Hopefully this one works....
- Editing song tags will no longer cause a reload. Adding and deleting songs will still cause a reload for now.
- New playlist config button on the config page. This will open a window where playlists can be selected to always be buffered in Vram. I can't really test its limits so if you enable a particularly large playlist it might cause problems. A different playlist config file is created per library.
- Improved cover display speed slightly so it should look a bit better when scrolling through albums quickly.

Being able to buffer playlists isn't that helpful when all the covers are on display the whole time but I wanted to get this update out to fix the tag reloading issue.

It was fairly major rewrite of the code that handled the buffering of covers so hopefully I haven't created any new issues.

I'm going to start working on filtering what covers are displayed based on what is in the file panel. It's probably going to take a while....
Title: Re: 3DBee (Cover Flow) Plugin
Post by: kaivsdoom on February 05, 2023, 12:59:39 PM

Hello
I tested version 1.4, but it doesn't work optimally.
the coverflow doesn't always run when you click on the albums in the library.Unfortunately I can't reproduce the error because I can't find anything in the errorlog.In the end I had an initialization error in the 3dBee dll and the plugin was switched off.I'm back to the 1.3 version. Goes very well

Regards :)
Title: Re: 3DBee (Cover Flow) Plugin
Post by: BoringName on February 05, 2023, 10:09:29 PM
the coverflow doesn't always run when you click on the albums in the library

Where are you clicking?

Just keep in mind it won't flow if you click on a song in the same album that is already displayed. I know that sounds obvious but sometimes in testing I will be thinking something isn't working just to realize a big album had basically filled the file list panel so it wouldn't have mattered where I clicked, it was all the same album cover.

I also just fixed an error that can occur when you have a playlists set to be buffered and then remove them all. I didn't change the version number, I just updated the zip file.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: kaivsdoom on February 06, 2023, 11:30:49 AM
hello

the error occurred when i jumped from the music folder to the playlist last added, e.g. different albums, then the flow doesn't work properly, at least for me, so back
Title: Re: 3DBee (Cover Flow) Plugin
Post by: phred on February 06, 2023, 04:51:19 PM
Using 3DBee 1.4 on MB 3.5.8437

Getting a lot of errors when doing various things with 3DBee enabled. Details with each error message

When using the Arrange Panels config and trying to move the 3DBee from a floating panel to the left sidebar. MB locked up and had to use Task Manager to terminate.
2/6/2023 11:38:51 AM - 10.0.19045.0 - 3.5.8437.20022P - System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.NullReferenceException: Object reference not set to an instance of an object.
   at SharpGL.OpenGL.DrawText(Int32 x, Int32 y, Single r, Single g, Single b, String faceName, Single fontSize, String text)
   at MusicBeePlugin._3DBee.drawInfo()
   at MusicBeePlugin._3DBee.OpenGLControl_OpenGLDraw(Object sender, OpenGLRoutedEventArgs args)
   --- End of inner exception stack trace ---
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
   at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
   at System.Delegate.DynamicInvokeImpl(Object[] args)
   at System.Windows.RoutedEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
   at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
   at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
   at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
   at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
   at System.Windows.UIElement.RaiseEvent(RoutedEventArgs e)
   at SharpGL.WPF.OpenGLControl.DoRender()
   at MusicBeePlugin._3DBee.RenderEventProcessor(Object myObject, EventArgs myEventArgs)
   at System.EventHandler.Invoke(Object sender, EventArgs e)
   at System.Windows.Forms.Timer.OnTick(EventArgs e)
   at System.Windows.Forms.Timer.TimerNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

When editing tags in twenty tracks in one album.
2/6/2023 11:37:03 AM - 10.0.19045.0 - 3.5.8437.20022P - System.ObjectDisposedException: Cannot access a disposed object.
Object name: '#=zez6DQZcAPU5WZcyEPA=='.
   at System.Windows.Forms.Control.CreateHandle()
   at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
   at System.Windows.Forms.Control.CreateControl()
   at System.Windows.Forms.Control.ControlCollection.Add(Control value)
   at System.Windows.Forms.Form.ControlCollection.Add(Control value)
   at #=zYNoweEmzoT6wtKtdEKtgAeQ=.#=zwGKq5fo=(Control #=zxY0S1cU=)
   at #=zotf1V7_RxDfmgQwxrU2ijEU=.#=zwGKq5fo=(Control #=zxY0S1cU=)
   at #=z2LwLE57li7UBdNQNDE19fLW72t0W.#=zqh_vmO1KE166(#=zx9khceqPIm5Y #=zltr8Xp0=, Boolean #=z3QOBjlDMldYYf4QG4Q==)
   at #=z2LwLE57li7UBdNQNDE19fLW72t0W.#=z2HZopLtohjiy(Boolean #=zznw$MH3XaLkJL3IZVg==, Boolean #=ziNm1FgVlH8Tq)
   at #=z2LwLE57li7UBdNQNDE19fLW72t0W.#=z$B__8Jx6e$6riy6C_tTFh2MAidD$.#=zp_y4bVS66ShD.#=z5R49hjDLl$yY()
   at #=z2LwLE57li7UBdNQNDE19fLW72t0W.#=z$B__8Jx6e$6riy6C_tTFh2MAidD$.#=zp_y4bVS66ShD.#=z1xTOLQvHzj0L(Object #=z9LoH5fY=, EventArgs #=z1HgN4a0=)
   at System.Windows.Forms.Control.OnClick(EventArgs e)
   at #=zZIbh$c0ghbkVKhN7oVEghbI=.OnClick(EventArgs #=z1HgN4a0=)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

Can't remember what I was doing when these two occurred.
2/6/2023 11:08:50 AM - 10.0.19045.0 - 3.5.8437.20022P - System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
   at System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource)
   at System.Collections.Generic.List`1.get_Item(Int32 index)
   at MusicBeePlugin.AlbumsLoader.getAlbumCover(Int32 index)
   at MusicBeePlugin.AlbumTextures.loadAlbumImage(Int32 LoadAlbumNum)
   at MusicBeePlugin.AlbumTextures.CheckBuffered()
   at MusicBeePlugin.AlbumTextures.threadAlbumTexture()
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()

2/6/2023 11:08:59 AM - 10.0.19045.0 - 3.5.8437.20022P - System.InvalidOperationException: The calling thread cannot access this object because a different thread owns it.
   at System.Windows.Threading.Dispatcher.VerifyAccess()
   at System.Windows.Media.CompositionTarget.VerifyAPIReadWrite()
   at System.Windows.Media.CompositionTarget.set_RootVisual(Visual value)
   at System.Windows.Interop.HwndTarget.set_RootVisual(Visual value)
   at System.Windows.Interop.HwndSource.set_RootVisualInternal(Visual value)
   at System.Windows.Interop.HwndSource.Dispose(Boolean disposing)
   at System.Windows.Forms.Integration.ElementHost.Dispose(Boolean disposing)
   at System.ComponentModel.Component.Dispose()
   at System.Windows.Forms.Control.Dispose(Boolean disposing)
   at #=zYNoweEmzoT6wtKtdEKtgAeQ=.Dispose(Boolean #=zuZugs2g=)
   at #=zotf1V7_RxDfmgQwxrU2ijEU=.Dispose(Boolean #=zuZugs2g=)
   at #=zYNoweEmzoT6wtKtdEKtgAeQ=.#=zbKixs136s45njD57CuyvD4Q=()
   at #=z2LwLE57li7UBdNQNDE19fLW72t0W.#=zyuezOPgI$4QI.#=zTxVSguI=()
   at #=z2LwLE57li7UBdNQNDE19fLW72t0W.#=zGWVOIIfXVypUkJGhpw==.Dispose(Boolean #=zuZugs2g=)
   at System.ComponentModel.Component.Finalize()
Title: Re: 3DBee (Cover Flow) Plugin
Post by: BoringName on February 06, 2023, 09:58:31 PM
I clearly need to do more thorough testing before I roll out a new version. Thanks for all that info. I'll look into it.

Did you have any playlists set to be buffered when these errors occurred?
Title: Re: 3DBee (Cover Flow) Plugin
Post by: phred on February 06, 2023, 10:38:18 PM
Did you have any playlists set to be buffered when these errors occurred?
Yes, two (out of my 100+) are buffered. One has 18 albums totaling 470 tracks. The other has 128 tracks culled from 101 albums.

I hope this helps you with troubleshooting. If you need to to do anything else, please let me know.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: boroda on February 11, 2023, 10:29:36 AM
1. what does "mouse scrolling" option do? "view scrollbar" turns on/off displaying scrollbar, but mouse scrolling is always working for me, no matter if "mouse scrolling" is enabled or not.

2. not only plugin floating panel is shown on taskbar, but also plugin settings window.

edited: grammar corrections
Title: Re: 3DBee (Cover Flow) Plugin
Post by: phred on February 12, 2023, 02:12:17 PM
Using 3DBee 1.4

I know there are issues when editing tags with 3DBee open, but I think there should be some error handling until the issue of editing with the plugin open can get resolved.

I was tag editing the tracks of a new CD and had the plugin open. When I went to move the files from the Inbox to an organized folder, MB threw this error. When I clicked 'ok' MB closed. Upon opening MB, the files were gone from the Inbox and had not been added to the library. All that was in the recycle bin was an empty folder from the new CD. I now have to start over again.

Code
MusicBee v3.5.8443.25585P  (Win10.0), 12 Feb 2023 9:03:

System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
   at System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource)
   at System.Collections.Generic.List`1.get_Item(Int32 index)
   at MusicBeePlugin.AlbumTextures.CheckBuffered()
   at MusicBeePlugin.AlbumTextures.threadAlbumTexture()
   at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()
Title: Re: 3DBee (Cover Flow) Plugin
Post by: cquinn on February 13, 2023, 09:25:25 PM
New to musicbee.  Long time mediamonkey user but they're, I don't know, it's just so hit and miss with them and mediamonkey 5 is a disaster.  Anyway, one of the reasons I stuck with it was monkeyflow - they're version of 3dbee.  Getting any new software configured just the way you want it can be a real pain and discourage people from switching and I've been at it with musicbee for about a week now but I think I've pretty much got it sorted.  My problem is I can't get 3dbee to work on 99% of the skins I try.  Is there a list of skins that it will work on?  I really like  forumB dark but without scrollbars it's just too hard to navigate and no matter what I try I can't get any scrollbars to appear so I switched to one dark.  i got the 3dbee folder in the right location and copied the dll's as instructed and the plugin is in place at the top of the music panel.  when I right click I get a context menu with flow and skin but everything else is blank.  no covers, no scrollbar - zip.  have I put something wrong or is it this theme will not display 3dbee?  I did get one of the builtin skins listed in the skin menu to display covers and a scrollbar but it's a skin I really dislike.  Sorry to carry on.  Is there anything I can do to get this great plugin to work?  thanks for making it for all of us to use.  it's really appreciated.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: phred on February 13, 2023, 10:15:05 PM
What version of MB are you using? (Help > About) INCLUDE THE LETTER (if any) AFTER THE NUMBER
How was MB installed? (Store, Installer, Portable)
Did you read the MB version requirements in the first post of this thread?
Title: Re: 3DBee (Cover Flow) Plugin
Post by: cquinn on February 14, 2023, 04:47:05 PM
Thanks for getting back so quick.  Musicbee version 3.5.8437 (no letter)
Musicbee running on windows 10 installed by installer
read the MB version requirements in the first post of this thread and followed them several times as I thought it must have been a mistake I made.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: cquinn on February 14, 2023, 04:58:09 PM
not sure but this just occurred to me - all my music is on a portable drive connected to my laptop.  could that be the problem?
Title: Re: 3DBee (Cover Flow) Plugin
Post by: BoringName on February 16, 2023, 11:27:38 AM
1. what does "mouse scrolling" option do? "view scrollbar" turns on/off displaying scrollbar, but mouse scrolling is always working for me, no matter if "mouse scrolling" is enabled or not.

2. not only plugin floating panel is shown on taskbar, but also plugin settings window.

edited: grammar corrections

"Mouse scrolling" lets you scroll the albums by clicking (and holding) the left mouse button and dragging it across the albums. It doesn't work very well if you try and scroll too fast. I'm thinking of removing it as using the scrollbar is much more effective and I really can't see a reason for needing to use mouse scrolling unless you have a touch screen and want to swipe with your finger.

I can't replicate the issue with the settings window on the taskbar. What steps are you performing for that to happen?

I know there are issues when editing tags with 3DBee open

I believe that issue will be related to what you posted previously which I think I have fixed for the next version but I've been a little busy over the last week and will continue to be for another week or two. I probably won't get another version out for a while.

My problem is I can't get 3dbee to work on 99% of the skins I try.

Which skin is the 1% that works?
Title: Re: 3DBee (Cover Flow) Plugin
Post by: phred on February 16, 2023, 01:59:19 PM
I know there are issues when editing tags with 3DBee open
I believe that issue will be related to what you posted previously which I think I have fixed for the next version but I've been a little busy over the last week and will continue to be for another week or two. I probably won't get another version out for a while.
Good to hear. I'll patiently wait for the next update whenever that happens. I've got it disabled for the time being. Thanks.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: MotleyG on February 16, 2023, 03:00:32 PM
...My problem is I can't get 3dbee to work on 99% of the skins I try.  Is there a list of skins that it will work on?  I really like  forumB dark but without scrollbars it's just too hard to navigate and no matter what I try I can't get any scrollbars to appear so I switched to one dark...
I am using FluentBee dark and 3dbee works fine for we on Win10. I did switch to forumB and it works there for me as well.
MB Version 3.5.8440
Title: Re: 3DBee (Cover Flow) Plugin
Post by: cquinn on February 17, 2023, 10:15:06 PM
loaded Fluent Bee and it works - sort of -  I get the scrolling album covers and a scrollbar at the bottom but the album covers are all placeholders - no actual covers.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: cquinn on February 17, 2023, 10:57:17 PM
I think I may owe you an apology.  does this plugin only work with playlists NOT the tracks you may be playing currently that are not in a playlist?
Title: Re: 3DBee (Cover Flow) Plugin
Post by: phred on February 17, 2023, 11:22:27 PM
I think I may owe you an apology.  does this plugin only work with playlists NOT the tracks you may be playing currently that are not in a playlist?
It works with playlists, now playing, and even tracks that are not playing that you simply click on.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: cquinn on February 18, 2023, 04:20:53 PM
Oh - great!  I'll keep working on it and eventually I'll get it working.  Everybody else has.  Thanks
Title: Re: 3DBee (Cover Flow) Plugin
Post by: cquinn on February 18, 2023, 05:08:54 PM
ok - got it working.  yeah!  had to uncheck View/Skin/skin windows borders and it appears.  now how do I get the album covers to appear?  they show in the album art panel but not 3dbee?  when I change albums the correct artist/album text appears in 3dbee but not the album cover.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: kaivsdoom on February 19, 2023, 04:28:20 PM

Hello Cquinn
I also had the problem at the beginning, artist was displayed but no cover, that was with version 1.2. With 1.4, which is current, I also had problems of a different kind. The predecessor 1.3 works for me, even if the RAM consumption is a bit high.
which plugin version are you running?
Title: Re: 3DBee (Cover Flow) Plugin
Post by: phred on February 19, 2023, 06:09:36 PM
 now how do I get the album covers to appear?
In addition to making sure you're using v1.4 of the plugin, also make sure you've installed it according to the instructions in the first post of the thread. There are four .dll files and they -all- go in the plugins folder. And the 3DBee folder goes in MB's AppData folder. Double-check the first post.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: cquinn on February 20, 2023, 07:11:54 PM
Still trying.  Uninstalled the plugin (it was 1.4).  downloaded a fresh copy of ver 1.4 (couldn't find 1.3 and I looked for 2 days) and reinstalled.  same result.  the carousel appears with the album and artist name at the bottom, it rotates when you change song or artist but no images.  Next is to backup settings etc and uninstall musicbee and reinstall and see if that works.  then if there is still no change I'll try installing a portable version on my music files hard drive.  Thanks to everyone who is trying to help.  it looks like an amazing plugin. 
Title: Re: 3DBee (Cover Flow) Plugin
Post by: kaivsdoom on February 20, 2023, 07:48:48 PM
Cquinn, for testing. If it doesn't change anything, then the problem lies elsewhere...

https://drive.google.com/file/d/1EF8Lah8PRdKOgB5aPAgfd9Dsdw2jkEx5/view?usp=sharing
Title: Re: 3DBee (Cover Flow) Plugin
Post by: cquinn on February 21, 2023, 09:32:36 PM
Thanks kaivsdoom for the 1.3 download.  much appreciated.  Unfortunately when i reinstalled this morning I used Musicbee version 3.5.8447 and the 1.3 plugin doesn't work on that.   what musicbee version are you using it on that works (and what skin)?  I'll see if I can get that and try again though I'm getting pretty discouraged installing/configuring & uninstalling over and over.  On the plus side I am getting very familiar with all the settings locations I'm using so I'm spending a lot less time Googling my questions as to where everything is.  cheers
Title: Re: 3DBee (Cover Flow) Plugin
Post by: kaivsdoom on February 22, 2023, 07:31:12 AM
too bad it didn't help, Quinn.
I used the standard skin to set it up, musicbee version was 3.5.8429 and 3Dbee 1.3.
when it worked the beatbar skin.
I think the problem is somewhere else, unfortunately I have no idea about the matter, so you can only try it, greetings

https://imgur.com/a/CuL8dwh
Title: Re: 3DBee (Cover Flow) Plugin
Post by: cquinn on February 24, 2023, 07:28:44 PM
So - after giving it a few days (so as to not get frustrated and just give up) I've got the portable version on my portable music hard drive but am unsure if I  should put the plugin into the same folders as the C:/ installation (now it's on the portable drive D:/).  in addition the art isn't showing in the Artwork panel.  This install took forever (3 hours) vs. the windows install which scanned the entire library (186,000 tracks) in about 10 minutes.  I assume that's due to the reduced thruput of the hard drive/usb connection.  could that be why no artwork?  It's still scanning it?  Or am I missing a setting somewhere?  Do the dll's go on the portable drive's plugin folder or in the C:/ as directed in the installation post?

UPDATE:  ARTWORK  PANEL NOW SHOWING NORMALLY
Title: Re: 3DBee (Cover Flow) Plugin
Post by: phred on February 24, 2023, 08:14:34 PM
The  dll files go in the plugins folder wherever MB is installed.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: cquinn on February 24, 2023, 10:34:36 PM
Victory!  At last I have it working.  Yeah!  Thanks to everyone for all the help.  Running MusicBee portable ver.3.5.8447 with 3Dbee ver 1.4 installed on a WD Passport 4tb portable drive attached to an HP laptop running Windows 10 (64) and it works perfectly.  I suspect the reason I had problems was some utility program running in the background on my C drive that interfered with the carousel display but it's working great now.  A big thanks to boringname for all the hard work bring this plugin to life and keeping us updated.  Appreciate you.  And to Steven - wow.  Thank you thank you thank you.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: aktor on February 26, 2023, 01:26:59 PM
Bug(?): When I click on the cover nothing happens.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: phred on February 26, 2023, 01:33:58 PM
Bug(?): When I click on the cover nothing happens.
Not a bug. This is the current behavior.
What are you expecting to happen when you click on a cover?
Title: Re: 3DBee (Cover Flow) Plugin
Post by: aktor on February 26, 2023, 01:41:52 PM
Play album.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: phred on February 26, 2023, 03:18:55 PM
Definitely not implemented. Not sure if it will be. The plugin developer will have to let us know his intentions.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: boroda on May 02, 2023, 07:52:35 PM
2. not only plugin floating panel is shown on taskbar, but also plugin settings window.

I can't replicate the issue with the settings window on the taskbar. What steps are you performing for that to happen?

mb prefs> plugins> configure. it's version 1.4:

(https://i.imgur.com/Cd5pgr1.png)
Title: Re: 3DBee (Cover Flow) Plugin
Post by: boroda on May 02, 2023, 07:55:10 PM
also, want to confirm that the problem with localized decimal point is solved in 1.4
Title: Re: 3DBee (Cover Flow) Plugin
Post by: cquinn on May 25, 2023, 05:55:09 PM
getting the same error when launching musicbee with the coverflow plugin about coverflow folder location.  then this error occurs:

MusicBee v3.5.8447.35892P  (Win10.0), 25 May 2023 9:50:

System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.NullReferenceException: Object reference not set to an instance of an object.
   at SharpGL.OpenGL.DrawText(Int32 x, Int32 y, Single r, Single g, Single b, String faceName, Single fontSize, String text)
   at MusicBeePlugin._3DBee.drawInfo()
   at MusicBeePlugin._3DBee.OpenGLControl_OpenGLDraw(Object sender, OpenGLRoutedEventArgs args)
   --- End of inner exception stack trace ---
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
   at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
   at System.Delegate.DynamicInvokeImpl(Object[] args)
   at System.Windows.RoutedEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
   at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
   at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
   at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
   at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
   at System.Windows.UIElement.RaiseEvent(RoutedEventArgs e)
   at SharpGL.WPF.OpenGLControl.DoRender()
   at MusicBeePlugin._3DBee.RenderEventProcessor(Object myObject, EventArgs myEventArgs)
   at System.Windows.Forms.Timer.OnTick(EventArgs e)
   at System.Windows.Forms.Timer.TimerNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
Title: Re: 3DBee (Cover Flow) Plugin
Post by: Modo on May 26, 2023, 12:45:03 PM
Congrats on getting this into Musicbee. It looks great already.

My initial thought is that there should be a standard plug-in install. The manual method feels like unnecessary faffing about.

I hope there is a way to add 3DBee as a valid MB file selector for the main panel. The core part of the MB layout ("main panel > files" in the MB layout manager) can not be removed to clean up the UI, but you can select a different way to show stuff (currently Artwork, Album Art, Jukebox, Track Details). Can 3DBee become a fifth option here for ease of use?

Found a bug immediately. 3DBee breaks non-violently when hidden and shown again in MB. I have added it to the main panel, and to replace my regular album art selection, I dragged the splitter all the way to completely hide the "files" element, effectively only seeing "3dbee". However, if I hide 3DBee by dragging the splitter all the way the other way (show only), then drag back to show 3DBee again, there is no image in 3DBee any more -- all black. Only restarting MB fixes this.

One usability suggestion: It should be possible to choose what clicking in the cover flow outside of the centre cover does. Click+drag is OK as a default scrolling method, but I see another use case: Click to select a specific partially visible cover. This would work well in conjunction with mouse scrolling as the cover scroll method.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: phred on May 26, 2023, 12:55:18 PM
Note  that the developer of this plugin has not been on the forum since February of this year. It may very well be that no more work will be done on it.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: cquinn on May 26, 2023, 06:14:34 PM
Thanks for the heads up
Title: Re: 3DBee (Cover Flow) Plugin
Post by: u3panic on August 02, 2023, 02:53:18 PM
Hello. I just wanted to say thank you for the plug-in. I have everything installed correctly and the plug-in working. I am interested in reszing it, as you have mentioned. I have downloaded the patch or patched version of MusicBee, but I am not sure how to install it. Would you mind providing me with directions for that as well? It's just not something I have had to do yet. Thank you, u3pan
Title: Re: 3DBee (Cover Flow) Plugin
Post by: phred on August 02, 2023, 04:29:53 PM
The patch(es) for MB will work on the Installer and Portable versions. The Windows Store version can not be patched.

If you're not using the Store version, see my signature below for info about installing the latest patch.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: SFroLtoad on November 10, 2023, 08:57:44 PM
Plugin not working,  and settings not saving
Error:
System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
   at System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource)
   at System.Collections.Generic.List`1.get_Item(Int32 index)
   at MusicBeePlugin.Plugin.SaveSettings()
   at MusicBeePlugin._3DBeeConfig.saveButton_Click(Object sender, EventArgs e)
   at System.Windows.Forms.Control.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ButtonBase.WndProc(Message& m)
   at System.Windows.Forms.Button.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
Title: Re: 3DBee (Cover Flow) Plugin
Post by: threap on November 27, 2023, 07:35:21 AM
Regardless of whether "BoringName" is still reading these forums or not - I just want to say that 3DBee is brilliant and works great for me. It scratches a deep itch that I've had ever since Apple killed Coverflow in iTunes. There's just something fulfilling about virtually "flicking" through a rack of album sleeves. Good job, author!

The only thing I wish I could change is the sort order for the album covers. It appears to be hard-coded to "sort by Artist" - which, when I have my Music library sorted by, say, "Date Added", means that there's a disconnect between what 3DBee is showing, and what the music library track list I have just below it is showing. And playing consecutive tracks in the library results in a lot of thrashing as 3DBee makes a massive jump in its list. But that's just nit-picking :)

Five star rating on this one!⭐⭐⭐⭐⭐
Title: Re: 3DBee (Cover Flow) Plugin
Post by: BoringName on January 06, 2024, 03:52:04 PM
Well, to get the obvious out of the way, I'm not dead......yet.

I would like to apologise for pretty much ghosting this place for nearly a year. Without going into too much detail, 2023 wasn't great but I've got no real excuse for not at least posting something here. When I got back to a position where I could post something I figured I should wait until I knew I could commit to providing regular updates and that hasn't happened until now.

So far 2024 is looking a lot better than 2023 so I should be around a bit more. At this point I need to refresh my memory on a lot of things so don't expect too much for a few weeks but I did have some plans for the plugins I have on here and I would like to pick up where I left off. I've had to replace my computer but I'm pretty sure everything got restored from backups, I just haven't looked at it for nearly a year....

Also apologies to Steven, you helped me get this thing up and running and responded promptly to any of my queries. It was a dick move for me to just ghost the place regardless what was going on privately. Sorry.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: Mayibongwe on January 10, 2024, 05:31:20 AM
Welcome back BoringName.

Don't be hard on yourself. I think most people here understand that we all have lives outside the forum.
We pitch in and contribute whenever we can - there's no pressure at all.

All the best for 2024! (https://getmusicbee.com/forum/index.php?topic=40460.msg219395#msg219395)
Title: Re: 3DBee (Cover Flow) Plugin
Post by: BoringName on January 16, 2024, 09:21:52 AM
New version 1.5 - 3DBee 1.5 (https://www.mediafire.com/file/ux1527t55mlxzvl/3DBee_1.5.zip/file)
- Should not attempt to draw if the panel isn't loaded. Theoretically shouldn't happen anyway but now it's enforced.
- Better handling of when the panel is disposed.
- Fixed some index out of range bugs (probably not all....)
- Fixed a bug when mouse scrolling is enabled that made it terrible to use. It's almost pleasant now.
- Fixed a bug that can occur when a playlist is deleted.
- Fixed a bug that prevented the flow from refreshing when songs were added/deleted. (This probably caused a few people errors.)
- Better handling of playlist settings on startup.
- Added Queue Next and Queue Last to the right click context menu.

The last change might be a bit iffy. It's set to find all songs that match the selected cover by matching the Album name and Album Artist. For most albums it should work fine but I can imagine it might be a bit iffy in certain circumstances for albums with various artists or maybe blank fields. I wanted to use the AlbumUniqueId but I couldn't get that to work in the query. I will check with Steven to see if it's possible.

edit: If you do play around with mouse scrolling. I have noticed the album covers don't load if you keep the mouse button pressed down, they appear as soon as you release the mouse button. I'll look into it. Probably not an issue if they are buffered already.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: boroda on January 20, 2024, 03:38:05 PM
- Added Queue Next and Queue Last to the right click context menu.

wow! that's really great!

one more related wish: could you 'play now' (how it's defined in MB prefs or just 'play album' if the former is impossible) on LEFT-clicking (or maybe double-clicking) on cover?
Title: Re: 3DBee (Cover Flow) Plugin
Post by: BoringName on January 21, 2024, 02:50:45 AM
one more related wish: could you 'play now' (how it's defined in MB prefs or just 'play album' if the former is impossible) on LEFT-clicking (or maybe double-clicking) on cover?

That will be in the next version. I couldn't find a command to "play album now" in the api so I will just set the first song on the album to "Play now" and then "queue next" for the rest of the songs. It should do the job.

I will probably push out another version next week that contains a few more fixes and that will be it for a while.

I'm doing a major re-write to modernize all the OpenGL elements. I really want to remove the need for all the buffer settings. I don't like how I've implemented them and they shouldn't be necessary if everything else is done properly.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: BoringName on January 25, 2024, 02:29:17 AM
New Version 1.6 - 3DBee_1.6 (https://www.mediafire.com/file/so5mfuepfu9wbgt/3DBee_1.6.zip/file)

- Updated SharpGL DLLs. I haven't changed any code in relation to the new library versions so you can probably just stick with the old ones. There might be some benefits behind the scenes. So if you are feeling adventurous just copy all the DLL's from the zip file. (back them up first just in case) Note for Boroda - the code was slightly different but I altered the source code again to handle some unicode characters before compiling. Hopefully it doesn't mess anything up in that regard.
- Changed font name to use the name and not path from skin.ini files. Just make sure any font you specify is installed in windows. Font names in the skin.ini file no longer need the TTF extension. eg)Arial.ttf can be listed as Arial. If you have 3DBee set to use the default Musicbee font you don't have to worry about it.
- Updated code for Queue Next and Queue Last context menu options to be more accurate.
- Added "Play Album Now" button to the context menu. You may find some albums do not queue in track number order. I have a fix for it I just haven't implemented it yet. It seems to be a rare occurrence but my testing library is a bit small. I don't want to mess around with the now playing list on my partners computer.
- Fixed another bug with mouse scrolling. It actually works properly now.
- Fixed a bug when changing flows that caused it to ignore some settings in Skin.ini files.
- Fixed a bad memory leak that could occur when constantly scrolling through covers. This should significantly improve memory usage on large libraries. The level of usage will depend on the quality of your images and fluctuate a bit as you scroll but it shouldn't continually creep up anymore.
- Improved draw speed so you should see less no cover images when scrolling fast through non buffered covers. They are still there but not as bad. Not sure I will ever be able to eliminate them completely, it's a trade off for not having VRAM filled with buffered covers.

I took the chance and installed it on my partners computer (if I break something on there I'd be as popular as asbestos) with over 2000 albums and it seemed pretty good. No playlists are buffered. Album buffer set to 50 and animation threshold set to 50. Previously if I zoomed back and forth through her collection it would eventually get to over 1gb and crash. Now it just sits around 200-300mb of ram usage. The no cover images appear a little bit but nothing too bad.

I'm testing on a Ryzen 5 7600 system with an RTX 3060 TI and music library stored on NVME drives. Your experience may differ on mechanical drives and/or slower processor.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: boroda on January 25, 2024, 07:44:51 AM
just tested new version, 2 remarks:

1. plugin settings window is still showing on taskbar. @BoringName, VS form editor has the setting on the right side among form properties "show on taskbar", please set it to false.
2. exception "index is out of range" on saving settings, but actually settings are saved, anyway. since it's "release" version i can't say the line of code where this exception arises. but i'm ready to run "debug" version if provided.
3. @BoringName, could you make "play album" action on DOUBLE or SINGLE-LEFT click also (not only in context menu)?

(https://i.imgur.com/Ws2SssF.png)

edit: typos
Title: Re: 3DBee (Cover Flow) Plugin
Post by: BoringName on January 25, 2024, 09:41:35 AM
just tested new version, 2 remarks:

1. Done.
2. Was the 3Dbee panel loaded (covers visible in the Musicbee window) when you clicked save? I can see where there might be a problem with that so I will have to look into it. Does it happen every time you try and save settings or was it a one off?
3. I've made it double left click for now.

Title: Re: 3DBee (Cover Flow) Plugin
Post by: boroda on January 25, 2024, 06:29:37 PM
1 & 3: thanks a lot.
2: i can't reproduce this bug anymore. probably because of MB restart. also, i've copied all files (including "3DBee" folder to AppData) over previous files (i.e. "upgraded" plugin) if this matters.

anyway, this bug doesn't bother me anymore.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: BoringName on January 31, 2024, 02:39:07 AM
New Version 1.7 - 3DBee_1.7 (https://www.mediafire.com/file/8jshiekxlru6fo2/3DBee_1.7.zip/file)

- Config panel no longer shows on taskbar.
- Double left click on the 3DBee window will "Play Album Now".
- Refactored the display of album and artist names to use the Graphics class instead of SharpGL. It's much less pixelated now. Long names that will not fit in the display window get truncated.
- The graphics class seems to handle special and cyrillic character encoding better. On my machine anyway, hopefully it applies to other locales.
- Editing song tags will update the album and artist name in the flow if they have changed. But the sort order will not change until restarting musicbee or changing libraries. I'll probably leave it that way until I've refactored all the OpenGL stuff.
- Fixed a regression bug that would occur if the 3DBee panel was removed in Arrange Panels and added again.
- Fixed a possible bug saving settings when the 3DBee panel is not loaded.
- Fixed a bug that prevented the last album cover from loading when Load All Covers Into Memory is selected.
- Fixed a bug that caused incorrect covers to display on program start if any playlists are selected to keep buffered.
- Improved handling of setting changes.

Edit: Gah, forgot to set the playlist config panel to also not show on the taskbar, that will be fixed in the next version.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: BoringName on February 08, 2024, 09:30:30 PM
New Version 1.8 - 3DBee_1.8 (https://www.mediafire.com/file/ai3w0sp8iql44af/3DBee_1.8.zip/file)

- Playlist config panel no longer shows on the taskbar
- Fixed a bug that caused index errors when adding multiple songs to the library.

Sorry about that second one, I should have found that a long time ago.....
Title: Re: 3DBee (Cover Flow) Plugin
Post by: purplebee on February 12, 2024, 08:49:52 PM
Hey,
Thank you very much for this plugin!! This brings back memories of getting my first iPod 20 years ago.

I've got a couple suggestions for it, but I completely understand if they're not feasible to implement.

*Adding an option to sort by Album Artist/Year instead of defaulting to Album Artist.
*Adding an option to only display covers for albums in a specific playlist, instead of displaying the whole library.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: BoringName on February 13, 2024, 04:33:32 AM
*Adding an option to sort by Album Artist/Year instead of defaulting to Album Artist.
*Adding an option to only display covers for albums in a specific playlist, instead of displaying the whole library.

Adding the functionality is easy enough but due to how everything is coded, it has implications I need to work through, particularly with buffered playlists.

I was going to work on re-coding all the OpenGL stuff but it's such a massive job I've been putting it off and making other improvements instead. But I really should nut it out so I can get rid of the buffer settings as they are just a workaround for the old inefficient OpenGL code.

But here is the to-do list I currently have. No promises what will and won't happen. Just a list I have of possible improvements.
- Re-code to use Modern OpenGL instead of immediate mode.
- Adding sort functionality.
- Limiting the flow display to playlist/files element/search etc...
- Add an option to change the flow to be vertical. Up and down instead of left and right.
- Migrate all the Skin.ini file settings to be configurable within Musicbee and allow skins to be created/deleted within Musicbee.
- Move the save settings confirmation message box to appear under the mouse instead of center screen. Apparently the only way is creating your own message box....
Title: Re: 3DBee (Cover Flow) Plugin
Post by: BoringName on March 30, 2024, 03:39:21 AM
I've got all the OpenGL code updated to modern methods. Stay in school kids, the maths involved with all this stuff is no joke.

So while I have how all this works fresh in my mind, is there any kind of flow someone wants that isn't included yet? If you can describe it in detail or better yet link to images/videos I should be able to implement it. I suspect most people are just using the basic cover flow but variety is always good. I did play around with a vertical flow but it didn't look that great and it reduces the space for the artist/album info.

I also considered maybe a side by side flow where it has the front of the cover on the left and the back of the cover on the right but I doubt too many people would have back cover images?

I've also fixed it so double clicking on the scrollbar doesn't start playing the album. A problem I introduced with the last version.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: lolguy8321 on April 01, 2024, 08:01:49 AM
I've got all the OpenGL code updated to modern methods. Stay in school kids, the maths involved with all this stuff is no joke.

So while I have how all this works fresh in my mind, is there any kind of flow someone wants that isn't included yet? If you can describe it in detail or better yet link to images/videos I should be able to implement it. I suspect most people are just using the basic cover flow but variety is always good. I did play around with a vertical flow but it didn't look that great and it reduces the space for the artist/album info.

I also considered maybe a side by side flow where it has the front of the cover on the left and the back of the cover on the right but I doubt too many people would have back cover images?

I've also fixed it so double clicking on the scrollbar doesn't start playing the album. A problem I introduced with the last version.

yoo man i rlly would like to use this plugin but i am not enjoying how it looks as in the quality theres no setting as well to change that specifically..
pardon my ignorance if u have said something about it in the earlier pages of this topic bascially i have tried foobar's version of coverflow and its rlllllly smooth and looks awesome when i scroll around in ur version the album art looks hella strange and its like im looking at a 144pixel image the og album art im using is 640 so it should look better no?
hopefully i explained properly only reason im using foobar rn is that this coverflow looks epic but i wanna use musicbee as it has proper discord presence support and the themes r good as well oh and u said about ppl giving ideas for how they want the coverflow to show that foobar coverflow plugin has sum like spiral and temple which look noice so maybe u can take inspiration from those?
thanks btw :)
Title: Re: 3DBee (Cover Flow) Plugin
Post by: BoringName on April 01, 2024, 03:17:22 PM
ur version the album art looks hella strange and its like im looking at a 144pixel image the og album art im using is 640 so it should look better no?

I installed foobar and the coverflow plugin, it took me a way longer than it should to figure that one out......

I have some pretty terrible low quality album covers in my collection and they look just as bad in foobar as they do in 3DBee, likewise at the other end of the scale. The higher res covers look just as good in 3DBee as Foobar in the coverflow.

So I assume your issue is the jaggies that appear on the edges of the album covers when it moves around. Foobar moves quite quickly and stops abruptly whereas 3DBee slows to a crawl before stopping which really highlights the jaggies. I initially thought it was just the crappy album covers I have in my collection but it also happens with high res covers.

Looking at foobar's coverflow, they seem to have some decent antialiasing going on which I haven't really researched yet, I've tried a few simple options but they've done nothing so I've just worked on other things in the meantime. I'll take a closer look. Those jaggies have bothered me for a while, I've added an antialiasing option for the album/artist info in the next version but that wasn't as hard to implement as it will be for the covers.

Those other flow options are interesting but I'll probably put implementing them on a low priority unless someone specifically wants to use one of them.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: lolguy8321 on April 01, 2024, 07:35:34 PM
ur version the album art looks hella strange and its like im looking at a 144pixel image the og album art im using is 640 so it should look better no?

I installed foobar and the coverflow plugin, it took me a way longer than it should to figure that one out......

I have some pretty terrible low quality album covers in my collection and they look just as bad in foobar as they do in 3DBee, likewise at the other end of the scale. The higher res covers look just as good in 3DBee as Foobar in the coverflow.

So I assume your issue is the jaggies that appear on the edges of the album covers when it moves around. Foobar moves quite quickly and stops abruptly whereas 3DBee slows to a crawl before stopping which really highlights the jaggies. I initially thought it was just the crappy album covers I have in my collection but it also happens with high res covers.

Looking at foobar's coverflow, they seem to have some decent antialiasing going on which I haven't really researched yet, I've tried a few simple options but they've done nothing so I've just worked on other things in the meantime. I'll take a closer look. Those jaggies have bothered me for a while, I've added an antialiasing option for the album/artist info in the next version but that wasn't as hard to implement as it will be for the covers.

Those other flow options are interesting but I'll probably put implementing them on a low priority unless someone specifically wants to use one of them.

the jaggies might be it but i more so notice the jaggies on the album art itself but yeah antialiasing i think shall fix it there is an option on the foobar equivalent called multisampling passes
2 other things could u maybe have the default foobar flow display thing as a flow option in musicbee? and an option to change how far the album art's are as in like maybe we could zoom in or sumthin rather than resizing the window itself?
thanks a bunch once again
Title: Re: 3DBee (Cover Flow) Plugin
Post by: BoringName on April 01, 2024, 11:41:03 PM

the jaggies might be it but i more so notice the jaggies on the album art itself but yeah antialiasing i think shall fix it there is an option on the foobar equivalent called multisampling passes
2 other things could u maybe have the default foobar flow display thing as a flow option in musicbee? and an option to change how far the album art's are as in like maybe we could zoom in or sumthin rather than resizing the window itself?
thanks a bunch once again

Multisampling is what I need to research.... it adds a bit of complexity to the code so it might take me a while to nut that one out.

The default foobar display is very similar to coverflow already..... I'll think about ti.

You can manipulate the flow with the skin.ini files. Depending on your install they should be located in your appdata folder. Eg) for Coverflow you should have the following file
C:\Users\lolguy8321\AppData\Roaming\MusicBee\3DBee\skin\Coverflow\skin.ini

Obviously change "lolguy8321" to your user name.

Backup the file before changing things because there is a chance you will completely break the flow. I don't have too much error handling going on when reading this file so if you key in silly values or change the format it might just stop working. I'm going to integrate them into 3DBee eventually which is why I haven't done much on the error side of things, they are a remnant of the original code I used to make the plugin.

So here are some values you can play around with.
nbleftalbum and nbrightAlbum - Determine how many covers will be displayed on each side of the flow. Some flow types ignore these settings. EG) Vista is hardcoded to set nbleftalbum to zero.
horizontalangle and verticalangle - Change the angle of the flow. This can do some crazy things. Start with low numbers.
movehorizscene and movevertiscene - Changes the position of the flow on the screen. Just start with low numbers (under 10)  and see what happens.
zoomscene - Self explanatory, adjusts how zoomed in the camera is, be careful as you may move the scene behind the camera which will make it disappear.

These are legacy options from the original code, they are still functional at the moment but I'm not sure how useful they, I played around with the angle options the other day and it just made a mess of things. I'll look at implementing them better when I integrate the ini files into the UI. I actually haven't enabled them since moving to modern GL in the recent version but I will.

You can adjust where the artist/album info is displayed with these settings.
albumfontoffsetX=0
albumfontoffsetY=0
artistfontoffsetX=0
artistfontoffsetY=0

I think the rest of the settings are self explanatory, fonts, colours etc.... Keep in mind changing fonts won't do anything if you have the "Use Musicbee default font" enabled.
The tablered, tableblue etc... colours refer to the bottom half of the background screen.

If the table colours are the same as the back colours, the flow will have a uniform background colour. If you make the table colours different to the back colours, the top half of the background will be the back colours, the bottom half of the background will be the table colours and there will be a gradient in between them to create a horizon effect.

Have fun, remember to back up the file so you can just copy it back after you break something :)

edit: Sorry I put "Local" in the appdata folder link when it should have been "Roaming". Fixed it.

edit2: I also forgot to mention you need to restart Musicbee for any changes you make to the Skin.ini files to take effect.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: BoringName on April 02, 2024, 01:49:58 AM
I don't know why everything has to be so god damn hard all the time. I've had so much stupid crap not work properly lately across different things for stupid reasons, this just takes the cake.

The author of the Foobar plugin has written it in C++ and used the GFLW library for OpenGL. To enable multisampling it's literally one line of code
glfwWindowHint(GLFW_SAMPLES, 4) //4 is the number of samples.

Mine is written in C# and I've used SharpGL as an OpenGL library wrapper. For whatever stupid reason the author of this library hasn't provided a wrapper for the command - glTexImage2DMultisample.

It's a really strange omission so maybe I'm missing something but google tells me a few other people are having problems implementing multisampling with SharpGL.

They go years without updating the library so I either have to update it myself and compile my own version, find some other way/figure out what I'm missing or refactor all the code and change to a different wrapper like OpenTK.

I doubt any of it will be as easy as the one line of code above, I clearly made some bad choices before I began coding this thing....

/ End Rant.

There are some other antialiasing techniques that don't require multisampling, I'll see how they go before I dive head first into that other crap.
Title: Re: 3DBee (Cover Flow) Plugin
Post by: lolguy8321 on April 02, 2024, 03:52:38 PM
bro im sure coding makes ur mind go poof sumtimes
umm another suggestion btw i got was that u could maybe make it so that the album and artist text take the album art colors?
and the background as well rn its jus a black screen right instead of that make it so that it blurs the album art and uses that as the background?
sorry if im jus piling stuff on ya rn :'(
if i could lend a hand i certainly would but idk anything bout coding oof
Title: Re: 3DBee (Cover Flow) Plugin
Post by: BoringName on April 03, 2024, 05:17:35 AM
bro im sure coding makes ur mind go poof sumtimes
umm another suggestion btw i got was that u could maybe make it so that the album and artist text take the album art colors?
and the background as well rn its jus a black screen right instead of that make it so that it blurs the album art and uses that as the background?
sorry if im jus piling stuff on ya rn :'(
if i could lend a hand i certainly would but idk anything bout coding oof

It can be pretty nuts. I've been down some god awful rabbit holes at times.

I spent pretty much all day yesterday on this antialiasing stuff. I got a shader working with FXAA but it only works on the internals of the image, not the edges which is the biggest problem. I really need multisampling for that. There is nothing on the internet about SharpGL and multisampling except people commenting they can't do it. Nothing in the documentation or samples, it's like they just completely ignored that functionality which is pretty bizarre. It's frustrating.

I've got one more thing left to try and then I'll give up on it and maybe just do the best workaround I can in the shader. At least that's one plus of updating to modern GL, I have options to manipulate the image via a shader which I couldn't do before. I'm not porting all this code to a different library, the jaggies will just have to stay if I can't figure it out. I tried adding a transparent border around the covers which did make a marginal difference, I might have to settle for that.

Making the background a blur of the album covers is a good idea, I'll see what I can do there. As I stated in the previous post, it doesn't have to be black, you can make it whatever colour you want in the Skin.ini file.

At this stage it is very unlikely I will do it for the album/artist info. I might be able to make them an averaged colour of the album cover colours but every letter would be that one colour and I don't think that's what you mean. I think I know a way it could be done but it's pretty complicated and will cause issues with transparency of the box they are drawn into.

I don't know how appealing it will be though. It might not be an issue when manually scrolling but if it's setup to scroll to the cover when the playing song changes, different backgrounds and lettering colours for each cover is going to strobe like crazy when shifting covers....I guess I could put a delay in updating the background so it's less abrupt. We'll see.