Author Topic: Theater Mode Plugin  (Read 193638 times)

Steven

  • Administrator
  • Hero Member
  • *****
  • Posts: 33600
i have implemented a new view called "Theater Mode" which displays a customisable and minimalistic view orientated for playback of music. See below for screenshots
Two menu items are added to the View menu:
- Theater Mode
- Activate Screen Saver
Both can be activated by hotkey assignment. The "Theater Mode" view is interactive and allows you to click player controls (such as play.pause, next track), the progress bar, etc. You can make the view full screen by double clicking, pressing F11 or alt-Enter.
The Screen Saver behaves like a normal screen saver and will close on mouse movement. By default the screen saver activates automatically in place of the windows screen saver if musicbee has application focus and is playing a track. Otherwise the normal windows screen saver would display (if enabled on your computer).


1. now included with the 2.0 install package - see http://getmusicbee.com/forum/index.php?topic=5823.0

1. first you need to be using version 2 of musicbee (2.0.4467 or above) - see this topic if you havent already installed it:
http://getmusicbee.com/forum/index.php?topic=5823.0
1a. then apply this patch until the next weekly update
http://musicbee.niblseed.com/V2/MusicBee_Exe_Patched.zip

2. then unzip this in the Plugins folder where musicbee is installed
http://musicbee.niblseed.com/V2/TheaterMode_Plugin.zip

    you should end up with something like:
    c:\program files\musicbee\musicbee.exe
    c:\program files\musicbee\plugins\mb_TheaterModePlugin.dll
    c:\program files\musicbee\plugins\mb_TheaterModePlugin.dll.config
    c:\program files\musicbee\plugins\TheaterMode.List\
    c:\program files\musicbee\plugins\TheaterMode.List\Default.xml


3. see this topic for customised theater views created by others - some are really great!
http://getmusicbee.com/forum/index.php?board=17.0

If you want to change the background picture just replace "TheaterMode.List\Default.jpg"
If you want to change the layout, add more fields or elements (for example there is a sound graph which is not enabled by default) you can edit "TheaterMode.List\Default.xml" which has instructions in the file


Default Layout
Double click to toggle full screen mode. Moving the mouse opens a player controls panel (previous track, play/pause, next track and volume control) under the album cover. You can move the progress bar by dragging or clicking it. The track rating and last.fm "love" icon display if configured to display in the main player panel, and can be clicked to set a new rating.


Artist Picture
Double click on the information bar to open the Now Playing Assistant. The lyrics sidebar automatically opens and closes depending on whether there are any lyrics. Clicking on the artist name will open an artist biography panel in place of the lyrics panel.


Landscapes
The lyrics sidebar can activated by moving the mouse to the right side of the screen and optionally pinned to stay open. A [lyrics] indicator will display by the track information if there are lyrics, and can be clicked to open the lyrics panel.


credits:
- default landscape image: "Waterfront" by "~ieStudio" @ http://iestudio.deviantart.com/gallery/#/d4rxpkp
- RotemK for some of the initial layout ideas
- Greb for the ideas behind the latest layout and some of the images used
- BeeFanatic for the plugin name
- Silas Arentsen (Silasje1) for the progress bar idea
- and others for the suggestions
Last Edit: April 23, 2012, 09:12:50 PM by Steven

lynott

  • Guest
When Theater Mode is activated and MB screensaver kicks in (I.e after x secs), when moving mouse to go back to Theater mode, the theater mode isn't refreshed. It does not refresh on F5 either. Only thing that works is to use next or previous track.

paq

  • Sr. Member
  • ****
  • Posts: 386
Question: Do you want us to post bugs and wishes regarding Theater Mode in this thread, the Bug Reports forum (for bugs, even minor ones) or continue doing so in this thread: 'screensaver' playing view mode for HTPC plasma/lcd displays ?

Maybe one can move all posts in that thread since the change to Theater Mode here instead.

Steven

  • Administrator
  • Hero Member
  • *****
  • Posts: 33600
Question: Do you want us to post bugs and wishes regarding Theater Mode in this thread, the Bug Reports forum (for bugs, even minor ones) or continue doing so in this thread: 'screensaver' playing view mode for HTPC plasma/lcd displays ?
its probably best to post here and the other thread now has a misleading title

When Theater Mode is activated and MB screensaver kicks in (I.e after x secs), when moving mouse to go back to Theater mode, the theater mode isn't refreshed. It does not refresh on F5 either. Only thing that works is to use next or previous track.
that should be fixed now

http://musicbee.niblseed.com/V2/TheaterMode_Plugin.zip

also supports double click to toggle full screen mode
i changed the default background image, so keep a copy of the current one if you like it

and for authors, you can now specify a width on text and fields
width="100"
or relative to the entire width of another element
widthDock="Picture"
or the width calculated as the difference from the X location of the element to a point on another element
widthDock="X:Panel.Right" width="-200"
Last Edit: March 23, 2012, 08:10:32 PM by Steven

Alexis

  • Hero Member
  • *****
  • Posts: 712
This is  really just great.  I am glad you changed the other default wallpaper... this is what drove me to trying something else (I should have said something).   Loving the full screen!
I am gonna see f i can put some of my own images for the rotational screen, but the artist images would be a nice background filler, similar to the visualization option... w ill  take my time and see what i cam come up with, but for now, I am definitely pleased.
They are not lazy... just more efficient.

paq

  • Sr. Member
  • ****
  • Posts: 386
I have done some heavy testing now (simply because I love this) to see what is possible and what not with Theater Mode. Here is what I've found:

#1. Bug/Wish: Alpha-value does not seem to apply to fields with text. This also includes "Time".

#2. Bug: Cover Art does not obey the settings of the artwork retrieval order. That is for example sometimes artwork is shown in MusicBee for tracks without associated files because there is picture file,  *.*,  in the same folder. However in Theatre Mode/ScreenSaver it shows as "no cover art".

#3. Bug: When width is not set, Id.Right will not adjust to the length of the text with id Id. For example, if I want to place an Artist and a Title field, of different fonts, next to each other horizontally with 10 px in between then I would do this for the Title-field: xAnchor="Artist.Right" x="10" However now it seems that .Right is the same as .Left since Title gets placed on top of Artist. It would also be nice to see this applied to Rating so that if Text is positioned next to Rating.Right then it would be just next to the right most star, no matter if its one or five stars.

#4. Wish: Have the bounding box for a text field, and Rating/RatingAlbum/RatingLove, contract to zero when field is not set/null. Example: Album, DiscNo and Year are laid out vertically on top of each other using yAnchor="DiscNo.Bottom" and so on. For tracks where DiscNo is not set I want Year to appear just below Album, otherwise with DiscNo in between.

#5. Wish: Now that there is width there could be an attribute align="left/center/right". This would align the text within the bounding box of set width. This could for example lead to some nice looking customizations with the Album name centered just beneath the cover art. The text would still be cut off with "..." when wider than width no matter alignment.

#6. Bug: The symbol for "No Stars" does not scale as well as the stars - it becomes blurry/pixelated. Also, unlike for stars transparency does not seem to apply on the symbol. Try using a size of 100+ and change between tracks with "No Stars" and with some stars to see what I mean.

#7. Wish: Have the ability to use size and color for the love flag, RatingLove, just like you now can do with stars.

I hope you realize how much potential MusicBee, this plugin among others and you yourself have, Steven! Hopefully I will be able to share with you the customization I've been working on in the next few days :)

Steven

  • Administrator
  • Hero Member
  • *****
  • Posts: 33600
for 1, thats not supported by the .NET graphics api i use. It would be possible if i used another approach but i dont want to do that unless you feel there is a strong need for it (and could implement what you want simply by adjusting the fg value)

for 2, i am a bit puzzled by that as it calls exactly the same function as every other place in MB is using for artwork retrieval - the only difference being that it doesnt support displaying auto-downloaded artwork. Is it possible that the now playing panel was displaying auto-downloaded artwork instead of the *.* file as you thought?

for 3, i'm not sure about implementing that. I will have a look and see how difficult that would be.

for 6, i have included some larger images now (32px) that should scale better and have implemented #7 for sizing. Will have a look later about colouring but should be ok

http://musicbee.niblseed.com/V2/TheaterMode_Plugin.zip
Last Edit: March 24, 2012, 12:45:28 PM by Steven

Steven

  • Administrator
  • Hero Member
  • *****
  • Posts: 33600
for 3, i assume the only reason you need to place a field to the exact right of another field is because you want to use a different font (otherwise you can just use child field elements).
I have some experience with doing that and can tell you that different fonts dont align well and you might do some y offsets to get it right but because musicbee scales the fonts they will go out of line again.
So my suggestion with this is that a font override be optionally available as an attribute on the child elements and the plugin will do the necessary vertical adjustments to keep the fields aligned vertically

paq

  • Sr. Member
  • ****
  • Posts: 386
#1: Alright! Didn't know if it was "intentional" or an unforeseen bug. What I want to achieve can be done by changing the other color values, so no strong need for it as of now. 

#2. I have "auto-retrieve missing artwork" disabled. My artwork retrieval order is 1. Folder.jpg 2. *.* 3. Embeded. "Reset the primary picture for existing files" is disabled and I haven't what I can remember ever ticked "scan and link new artwork". Files with cover art shown in Now Playing but not in Theater Mode does not have anything in the Artwork tab in Tag Editor.

#3. When I think about it my primary ideas were not that much about different fonts, rather more like these examples:
"<Title> <Love>" where the Love icon would be just to the right of the track title, if love was set.
"<Rating> <Title>" where the Title would appear with the same space between it and the stars, no matter how many stars.
"<UpcomingTrackTitle1> <UpcomingTrackTitle2>" having upcoming track titles on a line with space between. However I think this will look better with width applied.
So yeah, I think I'll manage to think around this one and I can see how it would be hard to fix so that .Right is correct for strings.

#6. Question: Is it that the stars are vector-images that makes them scale so much better than the "No Stars" and the "Love" pictures? One hack to make the Love icon scale equally well could be to display the unicode character heart, ?, instead of a picture. Maybe there is some unicode character that resembles the "No Stars" symbol as well? Or, if you want, I can try to provide you vectorized versions of those pictures.

# 7 Additional Wish: Let there be two color attributes, fg and bg, for RatingLove, for when Love is true respective false. In that case one could have bg fully transparent so that nothing is visible at all for all tracks where Love is false, rather than a black heart.

Steven

  • Administrator
  • Hero Member
  • *****
  • Posts: 33600
for #3, you already can concatenate different fields into one line using <child> elements eg. see from "<album>" in the default settings file. What is not supported and which i will look at concatenating rating or love rating this way.
I have already added font overrides on the child elements eg. have part of the text in italic or bold and will also add a colour override

for 6, did you try the new plugin version? In my tests it scales well for sizes 12 to 32 but once you go over 32px then it would gradually start looking blurry. I have already added colour support for the ratings and love image but not in the version from yesterday

also i forgot to mention there is already an attribute for text alignment that applies when the element has a specified width:
align="Right" or align="Center" with the default align="Left"
Last Edit: March 25, 2012, 03:00:34 PM by Steven

Steven

  • Administrator
  • Hero Member
  • *****
  • Posts: 33600
http://musicbee.niblseed.com/V2/TheaterMode_Plugin.zip
and if using less than 2.0.4466
http://musicbee.niblseed.com/V2/MusicBee_Exe_Patched.zip

- fixes random cases where the background or album cover dont display
- new "EndOfTrack" value for the rotationPeriod setting
- now allows Rating fields to be included in the child text and field concatenations eg. so you can display text before or after the rating
- child elements now support font and colours (if not provided they default to the parent element settings)
- rating elements (Rating, RatingAlbum, RatingLove) now use the size="n" attribute to determine the size of the element
- RatingLove uses fg2 to determine the "Love" colour and if not provided defaults to red
- text alignment attribute which can be used when an element has a defined width: align="Right" or align="Center" with the default align="Left"
- improved Rating image scaling up to 32 px
- an element width can be set to be calculated as the difference from the X location of the element to a point on another element
widthDock="X:Panel.Right" width="-200" - you might use this to prevent overflow into fields on the right

#2. Bug: Cover Art does not obey the settings of the artwork retrieval order. That is for example sometimes artwork is shown in MusicBee for tracks without associated files because there is picture file,  *.*,  in the same folder. However in Theatre Mode/ScreenSaver it shows as "no cover art".
its a bug on the plugin API and will be fixed for the next MusicBee update
Last Edit: March 25, 2012, 07:33:39 PM by Steven

phred

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 8317
The new EndOfTrack value works perfectly!!!  Both in Theater Mode and in Screensaver Mode.
Thanks Steven
Download the latest MusicBee v3.5 patch from here.
Unzip into your MusicBee directory and overwrite existing files.

----------
Check out the MusicBee Wiki.
How to post screenshots is here.

paq

  • Sr. Member
  • ****
  • Posts: 386
#8. Bug: Rating, RatingAlbum and RatingLove does not show at all in the latest version unless they're used as child elements. Applies to both Theater Mode and Screen Saver. Using MB 2.0.4467.

Thank you very much for everything else! I really like that you implemented #5 and that you can use child elements to place fields nicely next to each other.

MAF

  • Jr. Member
  • **
  • Posts: 26
I love the Theater Mode as screensaver because it allows me to see all my great album art at a huge size (presently set to 500 min and 700 max).

In customizing the fonts, how do you set a font for Bold Italic? For the style, I can use "Regular" "Bold" or "Italic" but don't see a way to set Bold Italic. I've tried "Bold Italic" "Bold-Italic" and "BoldItalic" with no luck. Is this possible?

Thanks, Steven, for all you put into this!

Steven

  • Administrator
  • Hero Member
  • *****
  • Posts: 33600
In customizing the fonts, how do you set a font for Bold Italic? For the style, I can use "Regular" "Bold" or "Italic" but don't see a way to set Bold Italic. I've tried "Bold Italic" "Bold-Italic" and "BoldItalic" with no luck. Is this possible?
"Bold,Italic"