Help - Search - Members - Calendar
Full Version: Using fb2k as a full screen media center frontend?
Hydrogenaudio Forums > Hosted Forums > foobar2000 > General - (fb2k)
djoole
Hi,

I had been using Zoom Player for video and music, but as i am transcoding my CD collection in FLAC format, i realize that ZP won't be able to read FLAC (Vorbis comment) tags.

So that's why i'm taking a look at foobar2000 that has no problem with FLAC tags.

But it's for using on a HTPC, with a 3m distance of the TV.

So i was wondering if foobar could be use as a HTPC frontend? I tried to find some configs, but they all seem to be for PC use, being at 30 cm of the screen.

Is Foobar2000 for me or will i have to look somwhere else?
leadfoot
QUOTE(djoole @ Mar 23 2008, 18:07) *

So i was wondering if foobar could be use as a HTPC frontend? I tried to find some configs, but they all seem to be for PC use, being at 30 cm of the screen.


I found a couple of threads on this topic, such as: http://www.hydrogenaudio.org/forums/index....HTPC&st=100
Admittedly, the threads are a bit sparse, but this one might point you in the right direction.
djoole
Thanks for pointing to this topic which helps me very much.
I shall post my work when done.

I'm a bit disappointed that no one else seems to use fb2k for HTPC though.
Some great things could be done.
djoole
Need some help here smile.gif

What i would like to achieve is a UI Windows Media Center like, which is :

Main view :
- Album list (with focusable small covers placed in grid).
- 5 focusable buttons to sort by Artist/Date/Album, or Album, or Genre/Artist/Date/Album, en/disable random, en/disable repeat.
- Focusable button to "Play all" tracks of the library.

When you click on an album of the Main view, you enter the Album view :
- Album cover and info (date, artist, genre, etc).
- Focusable Track list to play one specified track.
- Focusable button to "Play all" tracks of the album.
- 2 focusable buttons to en/disable random and repeat.

When you clic on "Play all" of any view, or a track from the album view, you enter the Now Playing view :
- which is basically what ojdo did smile.gif


As i am e very very newbie in fb2k (since yesterday), i will need some help to achieve this, unless it already exists, that would be fantastic!

Any help appreciated smile.gif
antar3s
before anybody can help, you need to say which UI you are using/want to use...so people can give you hints in the right direction
Squeller
You have very clear ideas about what you want and you're a newbie. In my opinion you'll get the config of your choice working. In ten years.

I don't know about WMP/Media center, I tuned fb2k for my fullscreen needs (notebook) and made it easily accessible (controllable via rc) for my wife and I can tell you this was ongoing, consistent and lot of work. And I know about the fb2k, components and code possibilities quite well.

You have very clear ideas about what you want and you're a newbie. In my opinion you'll get the config of your choice working. In ten years.

I don't know about WMP/Media center, I tuned fb2k for my fullscreen needs (notebook) and made it easily accessible (controllable via rc) for my wife and I can tell you this was ongoing, consistent and lot of work. And I know about the fb2k, components and code possibilities quite well.

The different views can e.g. be made by different ColumnsUI layouts, you can even have them in a tabbed layout. This is the way I would do it. foo_fullscreen. ColumnsUI as the main UI with probably some track display panels from panelsUI. And inside the trackl display, a lot of terror code in order to suit your buttons and album art needs.
djoole
QUOTE(Squeller @ Mar 25 2008, 11:54) *

a lot of terror

Scarring!! smile.gif

My girlfriend will have left me way before i'm done, it seems!

Mind sharing your fullscreen WAF compliant config with me? So that i don't start off nothing.
Thanks by advance.

@antar3s
I'm using Columns UI as main UI.



How would you do the first view, an Album List?
I tryed with foo_uie_albumlist.dll but it doesn't permit any UI customisation and can't be used to create an alnum playlist and focus the "album playlist" layout..
Squeller
QUOTE(djoole @ Mar 25 2008, 13:35) *
How would you do the first view, an Album List?
I tryed with foo_uie_albumlist.dll but it doesn't permit any UI customisation and can't be used to create an alnum playlist and focus the "album playlist" layout..

People would probably use the panels ui playlist view, it can hold pictures afaik. I'm not into this.

Here you can get my columnsUI fcl file maybe it helps you getting ideas. No album art here. A lot of dependencies. To my own file system, to components, to fonts you may not have... Note you can TAB through the 3 layouts, see "View - Tabbed panel stack mod". Here I use the "organize" for organizing stuff, .info. for displaying when walking through the file system and .time. for playback display.
A lot of code uglyness is because of internet radio treatment. Also a lot of classical music related code (e.g. "If title begins with roman chars, then do not display %tracknumber%")
Also, the columnsUI code is still in old columnsUI syntax.
antar3s
I personally use the panelsui library view, it is highly customizable. May I suggest you take a look in the Upload forum and this thread. You will find lot's of columns ui and panels ui configs that show what can be done with the different UIs. Adjusting them for your fullscreen needs should be easier than creating the layout from scratch wink.gif
Dreamless
easy.
fb2k, prefs, columns ui colours and fonts
now make your fonts as big as you want them
_eclectic_
Just a suggestion: I love foobar and use it as a utility/toolkit/listening package for my music. When it comes to whole house though, I use SqueezeCenter 7.0 from what is now Logitech (they bought Squeeze). It is a completely open source package, well-supported. You can use 'softsqueeze' a client app to play on PC's. Not sure how it would fit into your config, but there are lots of plugins, interfaces, etc. Someone is now working on an album browse (like in itunes where you 'flip' through the albums), there are plugins to provide additional data such as biography, etc.

It loads the music tags into a mySQL database, so you need to have really tagged your music well. smile.gif
djoole
Hi all,
In the end i'm going for a single colum playlist, with autohiding database filter filter as playlist view, and a trackdisplay as now playing view.

Now i would like to do something that i couldn't find anywahre : retrieve the play mode in a constant, like if %playmode%=random, then display a random icon on the now playing panel.

Is it possible?
cristox
QUOTE(djoole @ Mar 30 2008, 14:35) *

Hi all,
In the end i'm going for a single colum playlist, with autohiding database filter filter as playlist view, and a trackdisplay as now playing view.

Now i would like to do something that i couldn't find anywahre : retrieve the play mode in a constant, like if %playmode%=random, then display a random icon on the now playing panel.

Is it possible?


The component cwb_hooks provides %cwb_playback_order%.

So
$if($strcmp(%cwb_playback_order%,Random),*YOUR IMAGE*,)
should do the trick.

But what do you do with all the other playbackorder modes?

I use:
$if($strcmp(%cwb_playback_order%,Default),,%cwb_playback_order%)
to display the actual name of the current playbackmode.
djoole
QUOTE(cristox @ Mar 30 2008, 15:00) *

The component cwb_hooks provides %cwb_playback_order%.

Exactly what i wanted! Thanks very much.
I just want to know about the random mode because i only use random or repeat all.
djoole
OK, i've finished my simple HTPC config. Girlfriend loves it wink.gif

Some screenshots :

When i hit the "music" button on my RC :
IPB Image
(notice the "RDM" on the CD case, only appearing when this mode is activated)

When it's paused :
IPB Image

When i hit the "albums" button on my RC :
IPB Image

Then i choose an album with RC and hit "OK", so it plays the album, automatically returning to Now view :
IPB Image
(notice that the "RDM" disappeared because we're in album play mode)

Whenever i hit the "random" button, it comes back to random mode on the whole database autoplaylist.

The almost invisible genre, playtime and track number are made on purpose, i wanted to keep a minimalist layout.

I just need to tweak the great chronflow component to make it flow covers with cdcases, then it will be over.
Victor_FI
The code would be greatly appreciated, that looks awesome. smile.gif
Squeller
What are the requirements for album art at your config? (file paths, names, sizes...)
djoole
Requirements are ColumnsUI as main interface, and panelsUI as component for track display, and Chronoflow as component for the cover flow.

Images need to be in both places (program files, and appdata, don't know why).

The odjo config was resolution independent, but mine might be 1920x1080 dependent, as i did some mod.

I'll post the code tonight.
Walterrrr
QUOTE(djoole @ Mar 30 2008, 13:50) *


I just need to tweak the great chronflow component to make it flow covers with cdcases, then it will be over.

That's pretty nice! Although I'm a bit divided on the CD case idea. Some albums look better on Vinyl, among other things...
antar3s
how do you make the panels show/hide via RC?
djoole
As promised, here is the code for the TrackDisplay panel :
CODE

$windowstyle(hidetitlebar)

// Global

// CONFIGURATION ///////////////////////////////////////////



// Album Art

// Use $if and $fileexists if more locations need to be checked

$puts(path.albumart,$replace(%path%,$if(%disc%,$directory(%path%,1)\)%filename_ext%,folder.jpg))



// Positions

// pos.horizon: y-position of the grey horizon gradient

// pos.shadow: increase to see more reflection of the cd-cover

// pos.artx: if changed, further changes will be necessary for text positioning

// pos.arty: change position of album art relative to horizon line

$puts(pos.horizon,$muldiv(%_height%,4,7))

$puts(pos.shadow,120)

$puts(pos.artx,$sub($div(%_width%,2),278))

$puts(pos.arty,$sub($get(pos.horizon),400))



// Fonts

// font.a, font.b: used by addinfo for a) filling text, b) values

$puts(font.track,$font(Calibri,48,,255-255-255))

$puts(font.artist,$font(Calibri,40,,255-255-255))

$puts(font.a,$font(Calibri,24,,150-150-150))

$puts(font.b,$font(Calibri,24,,255-255-255))

$puts(font.c,$font(Calibri,180,,15-15-15))

$puts(font.d,$font(Calibri,250,,15-15-15))

$puts(font.e,$font(Calibri,10,bold,100-100-100))

$puts(font.f,$font(Calibri,10,bold,60-60-60))



// Progress bar

$puts(bar.height,5)

$puts(bar.color,255-255-255)



// END OF CONFIG ///////////////////////////////////////////



// Background

$drawrect(,,,,brushcolor-0-0-0 pencolor-null)

$imageabs2(%_width%,49,0,0,%_width%,49,0,$get(pos.horizon),/images/htpc2/horizon.png,NOKEEPASPECT)



// PerTrack



//Genre

$alignabs(0,-45,$sub(%_width%,30),1000,right,top)

$get(font.d)[%genre%]



//Track number

$alignabs(0,-45,$sub(%_width%,20),$add(%_height%,70),right,bottom)

$get(font.d)[%track%]



// Album Art

$imageabs($get(pos.artx),$get(pos.arty),/images/htpc2/case.png,)

$imageabs2(454,454,0,0,454,454,$add(71,$get(pos.artx)),$add(31,$get(pos.arty)),$get(path.albumart),NOKEEPASPECT)

$imageabs($add(71,$get(pos.artx)),$add(31,$get(pos.arty)),/images/htpc2/gloss.png,)



//Reflection

$imageabs2(556,516,0,0,556,$add(29,$get(pos.shadow)),$get(pos.artx),$add(460,$get(pos.arty)),/images/htpc2/case.png,ROTATEFLIP-6)

$imageabs2(454,454,0,0,454,$add(-2,$get(pos.shadow)),$add(71,$get(pos.artx)),$add(460,31,$get(pos.arty)),$get(path.albumart),NOKEEPASPECT ROTATEFLIP-6)

$imageabs($get(pos.artx),$add($get(pos.shadow),299,$get(pos.arty)),/images/htpc2/shadow.png,)



//Playback mode

//$alignabs(10,0,$sub(%_width%,20),$sub(%_height%,10),left,bottom)

$if($strcmp(%cwb_playback_order%,Random),

$alignabs($add($get(pos.artx),33),$add($get(pos.arty),32),$sub(%_width%,20),$sub(%_height%,10),left,top)

$get(font.e)RDM

$alignabs($add($get(pos.artx),34),$add($get(pos.arty),33),$sub(%_width%,20),$sub(%_height%,10),left,top)

$get(font.f)RDM

,)



// PerSecond



// Pause Overlay

$if(%ispaused%,

$drawrect($add(28,$get(pos.artx)),$add(28,$get(pos.arty)),500,460,pencolor-0-0-0 alpha-150)

$alignabs($add(71,$get(pos.artx)),$add(31,$get(pos.arty)),454,454,center,middle)$font(Webdings,72,,255-255-255)';'

$drawrect($add(28,$get(pos.artx)),$add(460,28,$get(pos.arty)),500,$add(-2,$get(pos.shadow)),pencolor-0-0-0 alpha-150)

)



// Progress Bar

//$ifgreater($muldiv(%playback_time_seconds%,%_width%,%length_seconds%),0,

//$drawrect(0,$sub(%_height%,$mul($get(bar.height),2)),$muldiv(%playback_time_seconds%,%_width%,%length_seconds%),$get(bar.height),pencolor-null brushcolor-$get(bar.color))

//,)



// Trackinfo

$alignabs(80,$add($get(pos.horizon),$get(pos.shadow)),$sub(%_width%,160),$sub(%_height%,$get(pos.horizon),$get(pos.shadow),80),center,bottom)

$get(font.track)$if2(%title%,[%filename%])

$char(10)$font(Arial,10,,0-0-0) $char(10)

$get(font.artist)[%artist%]

$char(10)$font(Arial,10,,0-0-0) $char(10)

$if(%last_played%,$get(font.a)Lu $get(font.b)%play_counter%$get(font.a)fois$char(10))

$if(%playback_time_seconds%,$get(font.a)$if(%album%,Album $get(font.b)%album%$get(font.a))$if(%date%, - Année $get(font.b)%date%$get(font.a)))



//time codes

$if(%isplaying%,

$alignabs(20,$sub($get(pos.horizon),270),1000,1000,left,top)

$get(font.c)[%playback_time%]

)



Here are the images to put in your foobar images dir (for me i had to put them in program files AND in app data) : clic

Code may be 1920x1080 dependent, you've been warned smile.gif



antar3s : I have 2 layouts, one with chronflow, and one with a vertical splitter and trackdisplay under it.
I use runcmd driven by girder to switch layouts.

Full screen is achieved with girder, thanks to a macro that resizes foobar window bigger than screen and moves it so that you don't see borders and title bar wink.gif
bowen_tk
Really nice config
simple and efficient...
Hope you will share the code, the image and the layout of your column ui config
Edit :
Can you put a screen of the layout config of column ui please
And use codebox instead of code please

A question
How do you select a track in an album??

So i have tested your config. I advise you to replace all the $imageabs by $imageabs2 because with panel ui sometimes $imageabs doesn't work
antar3s
QUOTE(djoole @ Mar 31 2008, 21:14) *

antar3s : I have 2 layouts, one with chronflow, and one with a vertical splitter and trackdisplay under it.
I use runcmd driven by girder to switch layouts.

ok so my question is how does that runcmd look like? sorry i stopped using columnsui a long time ago...im not aware of a feature that would do something like that. does columnsui allow u to load different layouts via a contextmenu, or how does it work?
S.O.P
Nice work djoole.

I've often wondered the same thing as I use Mediaportal at 1920x1200 but prefer the looks of a good foobar setup.

Hopefully more talented coders will carry on similar work. Love variety.

djoole
QUOTE(bowen_tk @ Mar 31 2008, 22:14) *

1) Can you put a screen of the layout config of column ui please
2) And use codebox instead of code please
3) How do you select a track in an album??
4) I advise you to replace all the $imageabs by $imageabs2 because with panel ui sometimes $imageabs doesn't work

1) Can't do it right now because i'm away. But it's very simple :
2 layouts, "Now" and "Main"
Chronflow component under "Now".
Vertical splitter under "Main", and TrackDisplay panel in the splitter, with "show caption" off.
2) Done
3) I can't do that with this config. I will have to skip to the wanted track.
What i wanted to do first was :
From the coverflow view, "OK" on an album -> go to the album view (basically a single colum playlist displaying album tracks), then "OK" on a track -> go to the Now playing view.
But i don't know how to affect 2 functions to my OK remote control button, depending on which layout i am (girder doesn't see difference beetween layouts, for it, it's the same foobar window).
If someone know how to do that, i'd appreciate some help.
4) can i just replace imageabs by imageabs2? Nothing to change in the arguments?

QUOTE(antar3s @ Apr 1 2008, 00:26) *

ok so my question is how does that runcmd look like? sorry i stopped using columnsui a long time ago...im not aware of a feature that would do something like that. does columnsui allow u to load different layouts via a contextmenu, or how does it work?

Runcmd is a foobar component that call any foobar menu command from the MS Windows command line.
Ex: c:\foobar2000\foobar2000.exe /runcmd="Playback/Play or Pause"

QUOTE(S.O.P @ Apr 1 2008, 00:49) *

Nice work djoole.
I've often wondered the same thing as I use Mediaportal at 1920x1200 but prefer the looks of a good foobar setup.
Hopefully more talented coders will carry on similar work. Love variety.

Let's not forget it's odjo work, i just used it and modified it to suit my needs. I would never have been able to do this alone!
antar3s
QUOTE(djoole @ Apr 1 2008, 13:33) *

QUOTE(antar3s @ Apr 1 2008, 00:26) *

ok so my question is how does that runcmd look like? sorry i stopped using columnsui a long time ago...im not aware of a feature that would do something like that. does columnsui allow u to load different layouts via a contextmenu, or how does it work?

Runcmd is a foobar component that call any foobar menu command from the MS Windows command line.
Ex: c:\foobar2000\foobar2000.exe /runcmd="Playback/Play or Pause"

sry thats not exactly what i wanted to know. but thnx anyways. i understood now, that columnsui puts entries in the mainmenu that allow you to load a different layout.
bowen_tk
Djoole
If you change imageabs to imageabs2 you need to change the argument too... but like this all the version of panelui work fine with your config...
djoole
I don't know what to put as arguments, and don't have time right now to find out, but if you know what to put, let me know and i'll make the changes!
bimbel
I'm also still using the mmpc config sometimes and here is the code with imageabs2 (IT#s only the album art that needs to be changed!)

CODE

$imageabs2(556,516,0,0,556,$add(29,$get(pos.shadow)),$get(pos.artx),$add(460,$get(pos.arty)),/images/htpc2/case.png,ROTATEFLIP-6)
$imageabs2(454,454,0,0,454,$add(-2,$get(pos.shadow)),$add(71,$get(pos.artx)),$add(460,31,$get(pos.arty)),$get(path.albumart),NOKEEPASPECT ROTATEFLIP-6)
$imageabs2(557,$get(pos.shadow),0,0,557,$get(pos.shadow),$get(pos.artx),$add(460,31,$get(pos.arty)),/images/htpc2/shadow.png,NOKEEPASPECT)

$imageabs2(556,516,0,0,556,516,$get(pos.artx),$get(pos.arty),/images/htpc2/case.png,)
$imageabs2(454,454,0,0,454,454,$add(71,$get(pos.artx)),$add(31,$get(pos.arty)),$get(path.albumart),NOKEEPASPECT)
$imageabs2(454,400,0,0,454,400,$add(71,$get(pos.artx)),$add(31,$get(pos.arty)),/images/htpc2/gloss.png,)
bowen_tk
Djoole
What bimbel propose is perfect so just copy it.
I am looking for a way to change the size fo all if the screen rezolution is not 1920x1200
As soon as i foind i tell you..
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2009 Invision Power Services, Inc.