it's finally here!
[span style='font-size:21pt;line-height:100%']Foo_looks 2.0[/span]
- advanced GUI interface for FB2k with LUA script integration
help us test release candidate 1:
download here (http://www.loodi.com/foo_looks_beta.zip)
installation guide here (http://www.btinternet.com/~sean.m.kelly/foo_looks/install.htm) (important - you will need the LUA dll's)
---
features list:
- access to 'every' fb2k button & menu command from your 'look'
- use full TagZ code to format your text fields
- amazing LUA scripting support for advanced features and interactivity
- support for the 24-bit PNG graphics format including support for the alpha channel
- custom z-layering of the graphics in your looks
- drag & drop files/folders to append to the playlist
advanced features now possible (using LUA):
- playlist display
- rotational volume control
- sliding drawers (as featured in wa3 skins)
- multiple sizes/layouts at the touch of a button
scripts in development:
- window scroll bars (mainly for playlist display)
- click-sliders (like those that set FM/MW/LW on a radio)
and more....
for information on how to design your own look, see our resource pages (http://www.btinternet.com/~sean.m.kelly/foo_looks/)
---------------
[span style='font-size:14pt;line-height:100%']Looks:[/span]
so far, there are only three or four 2.0 compatible 'looks'.
after all, we're only a very small dev. team.
these are:
foo_looks default - a showcase of features for designers to see what can be done with the current build
author: danZ
download: included with the plugin
----------------------
[span style='font-size:14pt;line-height:100%']Documentation:[/span]
we are currently in the process of writing extensive tutorials, guides & references.
so far we have some fragmented documention, and an almost complete tutorial on our resource pages (http://www.btinternet.com/%7esean.m.kelly/foo_looks/)
over the next week, we plan to update these pages regularly and build a very comprehensive guide to using & designing your very own 'looks'
---
[span style='font-size:14pt;line-height:100%']Links:[/span]
designer's resource page (http://www.btinternet.com/~sean.m.kelly/foo_looks/)
-----
we hope you enjoy it!!
plugin developer: danZ
tech support, tutor & webmaster: tk32
if you have any questions/problems/requests/thanks/etc... then you can contact the team
email me: ()
or join us on ICQ (486325)
looks great, very nice, thanks !
for danz look: would it be easy to add a close button ? to save the currently used size on foobar close ?
and overall, to add a button/menu to change the look with a click somewhere on the look ? without opening the menu/pref/look and setting another primary/secondary look and swap ?
haven't tested tk32's look now...
A bit resource heavy here. Uses 15-100% cpu with std look. XP1500+.
Looks neat tho
A bit resource heavy here. Uses 15-100% cpu with std look. XP1500+.
Looks neat tho
Is that on a fresh start? I've noticed that the resource usage might be creeping up as you switch looks on the fly.
How is the resource usage on the mini layout which doesn't have the spectrum display?
looks great, very nice, thanks !
for danz look: would it be easy to add a close button ? to save the currently used size on foobar close ?
and overall, to add a button/menu to change the look with a click somewhere on the look ? without opening the menu/pref/look and setting another primary/secondary look and swap ?
haven't tested tk32's look now...
There is no state persistence at the moment and something I'm trying to figure out how to best implement.
For now you could add this to the overrides section in the look prefs.
section look_one_presets
int startLayout layouts.standard
The choices are
layout.mini
layout.compact
layout.standard
layout.cover
layout.tv
cpu is high for the default skin - you're right
try my fooAMP skin instead
and can you please report cpu usage for my fooAMP skin
tell me the % used for big mode & small mode
i'm trying to optimize the code since my cpu is quite old also
also
look inside the ski near the top for handy presets
just remember to save changes
// presets section//
section presets
int default_mode 0 // 0 = small, 1 = expanded
int id3_headers 1 //
int smart_tags 1 //
int spectrum 1 // 1 = on
int albumart 0 // 0 = off
int always_on_top 1 //
int small_font 0 //
int minVolume -40
int albumart_width 70
int albumart_height this.albumart_width
int time_display 1 // 1 = remaining time, 0 = elapsed time
int use_tracknumber 1 // 1 = use id3 tracknumbers if present, 0 = always use playlistnumber
ehehe, damn tab characters don't show up in the forums.
the layout is nicer in the ski
------
new skin in development
(http://www.btinternet.com/~sean.m.kelly/new_project_ss.png)
thx for the tip danz. your look seems a little more cpu intensive (10% usual, jumping up to 40% at times. )
tk32, very low cpu usage (0-5% with both looks, xp2600 here...); just couldn't find the expand button without looking the code (my screen is a little bit too dark...)
if you want to free up some cpu using the default look, open the ski and edit the following:
section grips
int layer 2
list rect int {0,0,7,7}
// list transcolor color.red
list srcoff int { 392 0 }
you need to add the // to the transcolor line
if you are too lazy, just download the modified version here: foo_looks.ski (http://www.btinternet.com/~sean.m.kelly/foo_looks.ski)
it'll make the grips look strange, but cpu will drop to about 5%
we're looking into the problem now
thx for the tip danz. your look seems a little more cpu intensive (10% usual, jumping up to 40% at times. )
tk32, very low cpu usage (0-5% with both looks, xp2600 here...); just couldn't find the expand button without looking the code (my screen is a little bit too dark...)
thanks for the report
i'll make the button lighter when i update
thx for the tip danz. your look seems a little more cpu intensive (10% usual, jumping up to 40% at times. )
tk32, very low cpu usage (0-5% with both looks, xp2600 here...); just couldn't find the expand button without looking the code (my screen is a little bit too dark...)
Grab the beta again, I update the graphics and config file to remove the transparency on the seek grip. It looks like GDI+ has a pretty big overhead for blitting using a transparent color key.
I'll see what I can do about that if anything.
new build - fixed the cpu drain of the default look
download here (http://www.loodi.com/foo_looks_beta.zip)
btw designers, don't panic - my skin uses lots of transparency, and still has a low cpu footprint
it's because danZ was using bitmap graphics
if you want to free up some cpu using the default look, open the ski and edit the following:
section grips
int layer 2
list rect int {0,0,7,7}
// list transcolor color.red
list srcoff int { 392 0 }
you need to add the // to the transcolor line
it works, but looks pretty bad... I'll keep the good looking wasting version until there is a fix (or work out square buttons... oh it's done; man you're fast !)
Thanks and good night !
please don't hesitate to ask about any.....
questions
problems
bugs
suggestions
requests
in this forum
we need to know what you think
both danZ & myself check the forums daily, so you will usually get a quick reply
Hi,
I use the fooAMP skin and have a suggestion.
I like the progress bar in the foobar2000 seek bar since it updates on the fly where you are jumping to, if this same behaviour could be implemented into looks2 (and indeed the fooAMP skin) this would be great.
thanks.
Dan, Tom, thanks for your work.
I'll update foobarlooks.tk as soon as I've some spare time.
Hi,
I use the fooAMP skin and have a suggestion.
I like the progress bar in the foobar2000 seek bar since it updates on the fly where you are jumping to, if this same behaviour could be implemented into looks2 (and indeed the fooAMP skin) this would be great.
thanks.
if i understand you correctly, fooAMP already does this
if you click anywhere on the progress bar it jumps to that time
let me know if you meant something different, i may have misunderstood
EDIT:
after thinking about this some more, i realised you meant 'realtime progress drag'
it can be done, easily, but it makes the sound go all choppy
i never liked it - that's why i programmed my grip to jump to the time when you release the mouse button
but as a special request i can code it for you
custom fooAMP (http://www.btinternet.com/~sean.m.kelly/fooAMP2.ski) (realtime progress update)
overwrite fooAMP2.ski with the one above
Sorry, i meant the tooltip that comes up that tells you the time currently at the point where you are dragging to, with the current fooAMP design you have to guess where you are dragging to.
also, the albumart isn't transparent as in previous versions, this would be appreciated also.
Sorry, i meant the tooltip that comes up that tells you the time currently at the point where you are dragging to, with the current fooAMP design you have to guess where you are dragging to.
also, the albumart isn't transparent as in previous versions, this would be appreciated also.
dynamic tooltips aren't possible yet, sorry
however, i am able to display the jump-to time somewhere else in the skin
i'll think about where the best place to show it is.
having a foolooks2 control of "status bar" which puts this info in, whilst having user defined text (i.e. the %artist% - %title% display) at other times could be sensible.
dynamic tooltips aren't possible yet, sorry
however, i am able to display the jump-to time somewhere else in the skin
Hey tk32
How about just having it overtake the current time display.
On another note, great update, but there's one feature I'd like to see: a toggle button for the look to pop up instead of the main GUI. It's just to difficult having to search through a menu for fewer options than the main interface gives.
dynamic tooltips aren't possible yet, sorry
however, i am able to display the jump-to time somewhere else in the skin
Hey tk32
How about just having it overtake the current time display.
On another note, great update, but there's one feature I'd like to see: a toggle button for the look to pop up instead of the main GUI. It's just to difficult having to search through a menu for fewer options than the main interface gives.
sure
i'll add realtime progress time update now i realise people would like it
i'll post the update (with some other polishes) later
as for your other request, i'm not sure i understand what you mean?
can you explain it some more please
Hey Danz!
I tried use new release foo_looks (2.0 rc1), but on start foobar next text displayed in console
INFO (foo_looks) : Sprite 'background' is visible with empty rectangle
INFO (foo_looks) : Sprite 'albumart' is visible with empty rectangle
INFO (foo_looks) : Sprite 'spectrum' is visible with empty rectangle
INFO (foo_looks) : Sprite 'rolltext' is visible with empty rectangle
ERROR (foo_looks) : malformed number;
last token read: `0.0' at line 18 in string "..."
ERROR (foo_looks) : Sprite 'seekgrip' Error(s) loading script 'slider'
ERROR (foo_looks) : malformed number;
last token read: `100.0' at line 5 in string "..."
ERROR (foo_looks) : Sprite 'seekgrip' Error(s) loading script 'seekSliderImpl'
ERROR (foo_looks) : malformed number;
last token read: `0.0' at line 18 in string "..."
ERROR (foo_looks) : Sprite 'albumartgrip' Error(s) loading script 'slider'
ERROR (foo_looks) : malformed number;
last token read: `0.0' at line 18 in string "..."
ERROR (foo_looks) : Sprite 'volumegrip' Error(s) loading script 'slider'
ERROR (foo_looks) : malformed number;
last token read: `100.0' at line 9 in string "..."
ERROR (foo_looks) : Sprite 'volumegrip' Error(s) loading script 'volumeSliderImpl'
INFO (foo_looks) : AssetManager:Dumping unused image 'H:\Audio\Carpenters\(1971) Carpenters\cover.jpg'
INFO (CORE) : opening file for playback :
INFO (CORE) : location: "file://H:\Audio\Carpenters\(1983) Voice Of The Heart\09 - You're Baby Doesn't Love You A.mp3" (0)
I solve this error in next way:
change 0.0 to 0, 100.0 to 100
in foo_looks_common.ski
Is it correct?
I have W2k russian, foobar 7.7a.
pIv
I decided to give it a try. No problems
Just one thing - could you change font used in "Overrides" title and section in Preferences to Tahoma?
I decided to give it a try. No problems
Just one thing - could you change font used in "Overrides" title and section in Preferences to Tahoma?
For the default look it will work to put this in the overrides preferences
//Type in skin independent overrides here
section globals
string fontname "Tahoma"
Hey Danz!
I tried use new release foo_looks (2.0 rc1), but on start foobar next text displayed in console
INFO (foo_looks) : Sprite 'background' is visible with empty rectangle
INFO (foo_looks) : Sprite 'albumart' is visible with empty rectangle
INFO (foo_looks) : Sprite 'spectrum' is visible with empty rectangle
INFO (foo_looks) : Sprite 'rolltext' is visible with empty rectangle
ERROR (foo_looks) : malformed number;
last token read: `0.0' at line 18 in string "..."
ERROR (foo_looks) : Sprite 'seekgrip' Error(s) loading script 'slider'
ERROR (foo_looks) : malformed number;
last token read: `100.0' at line 5 in string "..."
ERROR (foo_looks) : Sprite 'seekgrip' Error(s) loading script 'seekSliderImpl'
ERROR (foo_looks) : malformed number;
last token read: `0.0' at line 18 in string "..."
ERROR (foo_looks) : Sprite 'albumartgrip' Error(s) loading script 'slider'
ERROR (foo_looks) : malformed number;
last token read: `0.0' at line 18 in string "..."
ERROR (foo_looks) : Sprite 'volumegrip' Error(s) loading script 'slider'
ERROR (foo_looks) : malformed number;
last token read: `100.0' at line 9 in string "..."
ERROR (foo_looks) : Sprite 'volumegrip' Error(s) loading script 'volumeSliderImpl'
INFO (foo_looks) : AssetManager:Dumping unused image 'H:\Audio\Carpenters\(1971) Carpenters\cover.jpg'
INFO (CORE) : opening file for playback :
INFO (CORE) : location: "file://H:\Audio\Carpenters\(1983) Voice Of The Heart\09 - You're Baby Doesn't Love You A.mp3" (0)
I solve this error in next way:
change 0.0 to 0, 100.0 to 100
in foo_looks_common.ski
Is it correct?
I have W2k russian, foobar 7.7a.
pIv
Hum, I'll have to look into this as it came up before with respect to locale settings. I'm not sure if lua can be set to respect different locales.
Next error in new release of foo_looks - 2.0 rc1
If path to the image of album art contained non-english characters - album cover not displayed.
In my case folder name is russian word.
Previous version - 2.10 work fine.
pIv
Sorry, i meant the tooltip that comes up that tells you the time currently at the point where you are dragging to, with the current fooAMP design you have to guess where you are dragging to.
also, the albumart isn't transparent as in previous versions, this would be appreciated also.
dynamic tooltips aren't possible yet, sorry
however, i am able to display the jump-to time somewhere else in the skin
i'll think about where the best place to show it is.
There is no built in way to display the current position when seeking because seeking is an entirely scripted operation. In v 1.x seeking was built in and thus I had a special case code to handle the seek to position display. Its still possible to display this information but it will have to be scripted into your slider script - which I think you already realized but I'm just clarifying.
With foo_looks 2.0 I've attempted to follow the
Zen of Lua (http://lua-users.org/wiki/ZenOfLua). That is, the component does less for you but provides more ways to do more. Currently the only built in behaviors are facilities to make buttons easier and the spectrum display. Everything else is scripted including the sliders, the playlist display, the flashing indicators, etc.
Hey Danz!
I tried use new release foo_looks (2.0 rc1), but on start foobar next text displayed in console
INFO (foo_looks) : Sprite 'background' is visible with empty rectangle
INFO (foo_looks) : Sprite 'albumart' is visible with empty rectangle
INFO (foo_looks) : Sprite 'spectrum' is visible with empty rectangle
INFO (foo_looks) : Sprite 'rolltext' is visible with empty rectangle
ERROR (foo_looks) : malformed number;
last token read: `0.0' at line 18 in string "..."
ERROR (foo_looks) : Sprite 'seekgrip' Error(s) loading script 'slider'
ERROR (foo_looks) : malformed number;
last token read: `100.0' at line 5 in string "..."
ERROR (foo_looks) : Sprite 'seekgrip' Error(s) loading script 'seekSliderImpl'
ERROR (foo_looks) : malformed number;
last token read: `0.0' at line 18 in string "..."
ERROR (foo_looks) : Sprite 'albumartgrip' Error(s) loading script 'slider'
ERROR (foo_looks) : malformed number;
last token read: `0.0' at line 18 in string "..."
ERROR (foo_looks) : Sprite 'volumegrip' Error(s) loading script 'slider'
ERROR (foo_looks) : malformed number;
last token read: `100.0' at line 9 in string "..."
ERROR (foo_looks) : Sprite 'volumegrip' Error(s) loading script 'volumeSliderImpl'
INFO (foo_looks) : AssetManager:Dumping unused image 'H:\Audio\Carpenters\(1971) Carpenters\cover.jpg'
INFO (CORE) : opening file for playback :
INFO (CORE) : location: "file://H:\Audio\Carpenters\(1983) Voice Of The Heart\09 - You're Baby Doesn't Love You A.mp3" (0)
I solve this error in next way:
change 0.0 to 0, 100.0 to 100
in foo_looks_common.ski
Is it correct?
I have W2k russian, foobar 7.7a.
pIv
Since you seem comfortable changing the scripts could you try this just for a test.
In the script "slider" add setlocale('"en-us") before the global variable declarations
lua slider
-- User properties
setlocale("en-us")
trackx = false
...
and revert the script values to 100.0 etc. and let me know if everything works OK.
Next error in new release of foo_looks - 2.0 rc1
If path to the image of album art contained non-english characters - album cover not displayed.
In my case folder name is russian word.
Previous version - 2.10 work fine.
pIv
I fixed this for the next RC which I'll post today or tomorrow depending on any additional bug reports.
i will be updating the foo_looks 2.0 documentation late tonight (GMT)
foo_looks 2.0 resource pages (http://www.btinternet.com/~sean.m.kelly/foo_looks/)
although for those of you in the states it will be more like early evening
i'll try to complete the tutorial and complete the code references
and put a few 'how to' guides online
the first 'how to' guide will be for my rotational volume dial
...
On another note, great update, but there's one feature I'd like to see: a toggle button for the look to pop up instead of the main GUI. It's just to difficult having to search through a menu for fewer options than the main interface gives.
sure
...
as for your other request, i'm not sure i understand what you mean?
can you explain it some more please
The request was more of one for foo_looks, not your skin. It was that the look could be accessed by the system tray or taskbar icon instead of the main foobar 2000 gui.
And a small 'bug' I noticed:
If you do not have you look set to always on top and another window moves ontop of it then the look takes on that of the Windows GUI. Screenshot is below.
(http://members.cox.net/tomatoface/remote/screenupdate.png)
...
On another note, great update, but there's one feature I'd like to see: a toggle button for the look to pop up instead of the main GUI. It's just to difficult having to search through a menu for fewer options than the main interface gives.
sure
...
as for your other request, i'm not sure i understand what you mean?
can you explain it some more please
The request was more of one for foo_looks, not your skin. It was that the look could be accessed by the system tray or taskbar icon instead of the main foobar 2000 gui.
And a small 'bug' I noticed:
If you do not have you look set to always on top and another window moves ontop of it then the look takes on that of the Windows GUI. Screenshot is below.
(http://members.cox.net/tomatoface/remote/screenupdate.png)
I've seen the redraw bug, a mouseover usually clears it up.
I'm planning to add systray support which has been requested by a few other people too
danz, that locale should work. i had similar problem with my own lua script. foosion suggested os.setlocale("C") to me (that's lua 5.0 though, 4.0 doesn't use tables for libraries)
This looks interesting. Reading documentation now.
Thanks.
This looks interesting. Reading documentation now.
Thanks.
sorry the docs are not complete, and there are still missing pages
documentation (http://www.btinternet.com/~sean.m.kelly/foo_looks/) is a 1-man job right now
i'll let you know in here whenever i make significant updates
expect one quite soon (should be in the next 24 hours)
Danz,
1. I change script foo_looks_common.ski, as you write:
lua slider
-- User properties
setlocale("en-us")
lua seekSliderImpl
-- User properties
setlocale("en-us")
lua volumeSliderImpl
-- User properties
setlocale("en-us")
and change 0 to 0.0 and 100 to 100.0
then I start foobar and see console log:
INFO (foo_looks) : Initializing GDI+
INFO (foo_looks) : Sprite 'background' is visible with empty rectangle
INFO (foo_looks) : Sprite 'albumart' is visible with empty rectangle
INFO (foo_looks) : Sprite 'spectrum' is visible with empty rectangle
INFO (foo_looks) : Sprite 'rolltext' is visible with empty rectangle
ERROR (foo_looks) : malformed number;
last token read: `0.0' at line 19 in string "..."
ERROR (foo_looks) : Sprite 'seekgrip' Error(s) loading script 'slider'
ERROR (foo_looks) : malformed number;
last token read: `100.0' at line 7 in string "..."
ERROR (foo_looks) : Sprite 'seekgrip' Error(s) loading script 'seekSliderImpl'
ERROR (foo_looks) : malformed number;
last token read: `0.0' at line 19 in string "..."
ERROR (foo_looks) : Sprite 'albumartgrip' Error(s) loading script 'slider'
ERROR (foo_looks) : malformed number;
last token read: `0.0' at line 19 in string "..."
ERROR (foo_looks) : Sprite 'volumegrip' Error(s) loading script 'slider'
ERROR (foo_looks) : malformed number;
last token read: `100.0' at line 12 in string "..."
ERROR (foo_looks) : Sprite 'volumegrip' Error(s) loading script 'volumeSliderImpl'
INFO (CORE) : startup time: 2562 ms
INFO (CORE) : opening file for playback :
INFO (CORE) : location: "file://H:\Audio\Ìèòüêè\Ìèòüêîâñêàÿ òèøèíà\(09) Ìèòüêè - Íà ôåâðàëüñêîì ñíåãó....ogg" (0)
INFO (foo_looks) : AssetManager:Dumping unused image 'E:\Program Files\foobar_0.7\components\foo_looks\looks20.jpg'
When I change "," to "." in regional settings foo_looks 2.0rc1 work fine, but that is not good method.
2. In windows XP when I chang mode of looks (compact, normal, album) - the black screen appears at moment. as i change screen resolution or color numbers in screen propeties.
pIv
Hi, foo_looks v2.0rc is very nice.Thanks!
By the way, I have two things considered using foo_looks v2.0rc.
1. I am a Japanese.
A jacket art will not be displayed if Japanese
is contained in the folder name.
2. Although there is a space in the left of
the jacket art of Standard layout,
balance thinks that it is bad.
I want you to attach a volume controller there like v1.10.
How is it?
Please tell me.
I am not so good at English.
There may be a strange text.
I'm sorry.
Thanks.
2. [..]
I want you to attach a volume controller there like v1.10.
How is it?
Please tell me.
There is a volume control on all of the default skin layouts (it isn't obvious though!). If you look just above the album art, you will see a small empty square. If you click and drag this horizontally, you will find it is the volume control..
Hope that helps.
2. [..]
I want you to attach a volume controller there like v1.10.
How is it?
Please tell me.
There is a volume control on all of the default skin layouts (it isn't obvious though!). If you look just above the album art, you will see a small empty square. If you click and drag this horizontally, you will find it is the volume control..
Hope that helps.
You can also use the mousewheel over the background to change the volume.
The volume is positioned the way it is now so it can be visible on all layouts w/o any additional scripting to reposition it.
1. I am a Japanese.
A jacket art will not be displayed if Japanese
is contained in the folder name.
Fixed in RC2 which I'll post sometime today.
Great job (as usual ).
But in Micro Layout tooltips are badly needed (perhaps in title section, if possible).
Personally, I'd make this layout a bit wider: I find it a bit cluttered up with all those otions in such a small space, but it's the look I use every day cause it doesn't interfere with the other windows.
Another thing I'd like to see is scrolling titles (possibly only when there's not enough space).
And, for the record, with this layout CPU usage is around 0%!
Thanks for your attention.
Alessandro
Personally, I'd make this layout a bit wider: I find it a bit cluttered up with all those otions in such a small space, but it's the look I use every day cause it doesn't interfere with the other windows.
That's why its the "Micro" layout
I'll make it a bit wider and make spot to show the rollover help text.
In the future though I'd like to get away from supporting the default look - it exists to show others the features of the component - I'm surprised people like to use it on a daily basis as I have almost no graphics skills at all. I'm hoping that people will get inspired to make their own looks.
I'd prefer to concentrate on development vs. look creation.
Look for an RC2 today with a few bug fixes and the modified micro look.
Ok I know people could get angry. But isn't there a way to make use of WinAmp 3 skin engine somehow? And we'd have access to many skins. WinAmp 3 skins are really beautiful. I am very jealous when I run WinAmp 5, lookwise it kicks fb2k's a**. BTW I appreciate all your work and have no intention of disparaging the current foo_looks development.
Even if it's not possible, could the next version of foo_looks allow FreeForm skinning like WinAmp modern skins? or to achieve such a skinning engine is very hard?
Ok I know people could get angry. But isn't there a way to make use of WinAmp 3 skin engine somehow? And we'd have access to many skins. WinAmp 3 skins are really beautiful. I am very jealous when I run WinAmp 5, lookwise it kicks fb2k's a**.
Someone is working on a reuseable look file that should work with any winamp 2.x skin file (once you extract the graphics from the .zip archive) since winamp 2.x skins follow a fixed layout. I believe, but may be wrong, the WA3 and WA5 have freeform skinning which might make it hard to have a generic look that could handle all cases but certainly, if you want to grab your favorite WA3 or 5 skin there is no reason you couldn't make a look that cloned it.
Even if it's not possible, could the next version of foo_looks allow FreeForm skinning like WinAmp modern skins? or to achieve such a skinning engine is very hard?
foo_looks is freeform - make any graphics you like and tk32 or myself could turn it into a functional look.
EDIT - of course it won't be like WA5 because I've taken a different approach to how things are configured and controlled
I'm surprised people like to use it on a daily basis as I have almost no graphics skills at all.
I always liked your micro-mode: what I need is an interface that has all the (main) features "at hand", stays on top but still let me work freely with my other programs.
As you can see, graphics are not on top of my priority list but this doesn't mean I don't like your work from an aesthetic point of view.
Just make it a bit more clean and functional and your MicroLayout will stay on top of all my windows!
And thanks again for your time.
Alessandro
foo_looks 2.0 RC2 (http://www.loodi.com/foo_looks_beta.zip)
Ready for testing.
Changes
1. Fixed bug with cover art search when matches contain utf8 encoded chars.
2. Fixed bug in import file parser which caused import to fail in certain cases.
3. Changed microlayout to be a little wider and include rollover help text.
4. Fixed script logic bug when closing trays during relayout
5. Moved song time to rollover text area
i think you're making a mistake if you try to compare foo_looks against wa3 skins
our aim was not just to make eye candy, but to provide unrivalled functionality
we also wanted a GUI that wasn't resource heavy, or had a large RAM footprint
it's a gross misunderstanding of foo_looks to say it's not as good as wa3 skins, because in fact, we can do so many things that were never possible in wa3 skins
a few special features off the top of my head
- text display has never been so powerful & dynamic
you can combine TagZ & LUA scripts to write unbelievably complex & dynamic text, whereas winamp just gives you the same old 'artist - title <00:00>'
- you can add unlimited layers of graphics, with alpha blending & z-layering
you can use this to create some awesome effects
- you can make any part of the look appear/move/disappear based on a condition, or a button
for example, you could write a script that swaps the position of the track info & buttons depending on whether the look is docked on the top, or the bottom of the desktop
and there is so much more....
the beauty of our plugin is that it will evolve as more people contribute
all the tools exist here for wonderful & powerful looks
.....although yes, we can't display round style looks very well yet
but is that such a big deal??
i thought fb2k users preferred function over form?!?!
The download link should be correct now.
i'd just like to remind people that both danZ & myself are happy to do most of the coding for your looks (at least until we have more tutorials available)
the best thing to work on is the graphics (since we are both awful at that)
if you send us your graphics, or half-written ski files - we'll do anything else that needs to be done
we'll even do all the code for complete beginners
so fire up Photoshop, and help us in the eye-candy department
thanks
()
---
new look in development:
(http://www.btinternet.com/~sean.m.kelly/new_project_ss.png)
- you can make any part of the look appear/move/disappear based on a condition, or a button
for example, you could write a script that swaps the position of the track info & buttons depending on whether the look is docked on the top, or the bottom of the desktop
I'd love to know about this - I assume this means I can tell it that if I change layouts that I want it to keep the top right point the same if I'm in the top right part of the screen? (e.g. put the default look into Cover Art Layout, move it to just left of the minimise button and then change to the Standard Layout. You'll know what I want to change then!)
test out the progress bar on this new skin (in development)
P.S. did you notice my songtime is gently embossed - a nice little trick
the skin is far from complete.. i just wanted to show the dragbar
i'll let you know as i make more progress - i'm planning to have some really innovative features on this skin... watch this space
i'll let you know as i make more progress - i'm planning to have some really innovative features on this skin... watch this space
watching eagerly
tk32: I've noticed a bug in the progress bar code:
function onattach(this)
minx = look_getX(this)
maxx = look_getWidth(this)
end
I think that minx should be 0, I have a progress bar that is several pixels from left and if I use your code clicks are not properly recognozed, however if I set it to 0 it works just fine. Correct me if I'm wrong.
tk32: I've noticed a bug in the progress bar code:
function onattach(this)
minx = look_getX(this)
maxx = look_getWidth(this)
end
I think that minx should be 0, I have a progress bar that is several pixels from left and if I use your code clicks are not properly recognozed, however if I set it to 0 it works just fine. Correct me if I'm wrong.
thanks crazycoder, i'm sure you're right
i didn't think anybody would debug it
although i knew it wasn't in a fit state to re-use yet
would you mind if i played the
'tired card' it was 3:00am when i wrote it
when using an offset progress bar, it's easy to lose track of whether you are making absolute or relative calculations
it was just a quick hack on the slider script, and it needs a bit of tidying.
i'll also doublecheck it's totally generic.
but i'm glad it's working for you already.
i'll make the other improvements, and then put the slim & complete version on the resource pages when it's done
thanks for shaming me - i'm happy to see there are other users already interested in the finer points of LUA scripts
tk32: I've noticed a bug in the progress bar code:
function onattach(this)
minx = look_getX(this)
maxx = look_getWidth(this)
end
I think that minx should be 0, I have a progress bar that is several pixels from left and if I use your code clicks are not properly recognozed, however if I set it to 0 it works just fine. Correct me if I'm wrong.
If the logic is based on the size of the sprite then minx should probably be look_getX(sprite) and maxx should be minx + look_getWidth(sprite).
function onattach(this)
minx = look_getX(this)
maxx = minx + look_getWidth(this)
end
EDIT/ BTW, nice use of borders and fills.
what about the functionality of the dragbar? do you like it?
2. [..]
I want you to attach a volume controller there like v1.10.
How is it?
Please tell me.
There is a volume control on all of the default skin layouts (it isn't obvious though!). If you look just above the album art, you will see a small empty square. If you click and drag this horizontally, you will find it is the volume control..
Hope that helps.
You can also use the mousewheel over the background to change the volume.
The volume is positioned the way it is now so it can be visible on all layouts w/o any additional scripting to reposition it.
OK.Thank you.
It carries out based on a default skin,
and when free, I think that will make a skin.
1. I am a Japanese.
A jacket art will not be displayed if Japanese
is contained in the folder name.
Fixed in RC2 which I'll post sometime today.
A jacket art will be displayed even
if Japanese is contained in the folder name.
Thanks!
what about the functionality of the dragbar? do you like it?
It's great. Thank you =) I appreciate your work.
I hope some day there will be a generic dragbar in the common scripts that will have an option - to use a grip or to use your approach.
I've notived that making simple things requires a lot of code in foo_looks 2.0 if to compare with 1.0. Of course, it's because generic scripts for standard controls are not written yet. My very simple skin is now 700 lines of code, but it was about 100 lines in 1.0.
what about the functionality of the dragbar? do you like it?
It's great. Thank you =) I appreciate your work.
I hope some day there will be a generic dragbar in the common scripts that will have an option - to use a grip or to use your approach.
I've notived that making simple things requires a lot of code in foo_looks 2.0 if to compare with 1.0. Of course, it's because generic scripts for standard controls are not written yet. My very simple skin is now 700 lines of code, but it was about 100 lines in 1.0.
Right, as I stated, foo_looks 2.0 does less for you but gives you the power and flexibility to do more. 1.x was all about making it easy (thus the large, inefficient graphics layout, the built-in sliders, etc.)
Are you using any of the scripts from foo_look_common.ski? Those are all intended to be generic and reuseable and to cover common things. It is far from complete and tk32 and I are both intending to attempt to make as many basic scripts availale as possible so that a basic look can be constsructed by just defining some sprites, importing the common scripts, and attaching those as needed.
I'm even considering expanding the import to allow something like
import http://www.blah.com/commonscripts.ski (http://www.blah.com/commonscripts.ski) and then we could host common scripts on the same site as the looks.
Expect 2.x to continue to improve and remember that in 2.0 I basically started over so its more like a first release then a 2.0 despite the name.
Right, as I stated, foo_looks 2.0 does less for you but gives you the power and flexibility to do more. 1.x was all about making it easy (thus the large, inefficient graphics layout, the built-in sliders, etc.)
Are you using any of the scripts from foo_look_common.ski? Those are all intended to be generic and reuseable and to cover common things. It is far from complete and tk32 and I are both intending to attempt to make as many basic scripts availale as possible so that a basic look can be constsructed by just defining some sprites, importing the common scripts, and attaching those as needed.
I'm even considering expanding the import to allow something like
import http://www.blah.com/commonscripts.ski (http://www.blah.com/commonscripts.ski) and then we could host common scripts on the same site as the looks.
Expect 2.x to continue to improve and remember that in 2.0 I basically started over so its more like a first release then a 2.0 despite the name.
Sure, I understand and fully agree with you. Thanks for the input.
Yes, I'm using some common scripts, of course. I like the flexibility of 2.0. It's a good start. However I'm not a designer, I'm coder, I've created a simple look that suits me for 2.0, it took about an hour to create it. Actually, it's almost a port of foo_looks_mini from 1.0 with my custom changes.
At the moment I don't have enough time to play with it, but I'll certainly do so later.
The quick and dirty port is available here: http://amip.tools-for.net/config/dl.php?fi..._looks_comm.zip (http://amip.tools-for.net/config/dl.php?file=foo_looks_comm.zip)
Standard state:
Small bug report: I've noticed that when screensaver disables my look image is messed up, I think that it has to deal with the same thing described some posts above (problem when window is overlapped by another)
I've toyed around with foo_looks 2.0 and created this thing (http://www.stud.uni-karlsruhe.de/~uzbs/fb2k/endless_tracks.zip), which looks something like this (only the screenshot is not animated):
However, there is one thing worth mentioning: when this is loaded, the VM size of foobar increases by about 100kB every second. I noticed this when Windows told me that it had to increase the swap file. After I was aware of that, I tried the foo_looks_one skin. With that loaded the VM size increased by some kilobytes every now and then, mostly when something is animated.
The most important difference seems to be that my script makes heavy usage of functions that manipulate sprites (change location or image source position).
However, there is one thing worth mentioning: when this is loaded, the VM size of foobar increases by about 100kB every second. I noticed this when Windows told me that it had to increase the swap file. After I was aware of that, I tried the foo_looks_one skin. With that loaded the VM size increased by some kilobytes every now and then, mostly when something is animated.
I've noticed the same thing, I've left foobar for the night playing and in the morning it crashed because out of memory. I've just noticed in the process manager foobar takes about 70mb after a couple of hours of playing.
It is defnitely related to foo_looks, hope this will be fixed soon
I've toyed around with foo_looks 2.0 and created this thing (http://www.stud.uni-karlsruhe.de/~uzbs/fb2k/endless_tracks.zip), which looks something like this (only the screenshot is not animated):
However, there is one thing worth mentioning: when this is loaded, the VM size of foobar increases by about 100kB every second. I noticed this when Windows told me that it had to increase the swap file. After I was aware of that, I tried the foo_looks_one skin. With that loaded the VM size increased by some kilobytes every now and then, mostly when something is animated.
The most important difference seems to be that my script makes heavy usage of functions that manipulate sprites (change location or image source position).
Yeah, good catch, I had a memory leak in look_setRect().
So are you going somewhere with your tilemap or just messing around - its a cool effect. I was thinking I might script a space invaders game or something just to show the foo_look sprite manipulations, etc.
I know you've been doing a lot with lua so let me know if anything I'm doing seems odd or incorrect.
Look for RC3 in a day or so with the memory leak and a few other bugs fixed.
Edit/
BTW, FYI after looking at your .ski file just want to make sure you know you can do the following.
section tile_common
list fillcolor color.black
list statemap states.None
list rendermap int { render.Image }
bool visible false
sprite tile00
string include "tile_common"
sprite tile01
string include "tile_common"
and so on...
Yeah, good catch, I had a memory leak in look_setRect().
So are you going somewhere with your tilemap or just messing around - its a cool effect. I was thinking I might script a space invaders game or something just to show the foo_look sprite manipulations, etc.
More like "just messing around". Coding a game will be a pain in the neck, unless you add the ability to dynamically create sprites - which would also simplify coding a resizable skin with a playlist.
v2.0 RC3 Available (http://www.loodi.com/foo_looks_beta.zip)
Changes
1. Fixed parser bug that prevented using table lookups such as x = foo in inline scripts
2. Created new global - look_sprites - which is a table of all loaded sprites as defined in the .ski file -
ie.
{ sprite1, sprite2, etc }
This is useful if you want to perform an operation on all sprites or iterate all sprites.
3. Fixed NULL pointer dereference which was causing foo_tunes to crash at startup. Tested succesfully with foo_tunes 0.0.4
4. Fixed memory leak in look_setRect() - thanks foosion for reporting
5. Moved "albumartDisplay" script to common import file
6. Added albumart slider to default look which will allow you to view all cover art matches.
DanZ,
very very nice... with your look v2 and Tunes, Foobar is finally getting there!!
(and your RC3 works a treat with Tunes running)
cheers and nice work,
Peter
just noticed it now, when I try to swap looks from the look components menu, foobar crashes; it does not happen if I use the component menu from the systray.
the slider for album art works great, but it would be nice hiding it in the cover look when the mouse is not on the look for example...
great work !
just noticed it now, when I try to swap looks from the look components menu, foobar crashes; it does not happen if I use the component menu from the systray.
the slider for album art works great, but it would be nice hiding it in the cover look when the mouse is not on the look for example...
great work !
I can't reproduce this. What look are you swapping from and to?
Also, both menu handlers (compenent menu and systray) run in to the same function internally so I'm surprised it only happens from one approach.
from your look to any of tk32' or from tk32' last one (tk32-new_skin_project) to one of yours.
here is the crash log.(foobar 7.7a, winxp sp1)
EDIT: removed crash log.
that's very strange
i switch from my looks to danZ' looks all the time.. [span style='font-size:8pt;line-height:100%'](because it's the quickest way of unlocking the graphics file when you need to overwrite it)[/span]
and i can't recreate this either
it could possibly be a clash with another plugin, since for my 'look-editing' instance of fb2k i only have a minimal install
core (0.7.7) + foo_looks (2.0 RC3)
i'll try testing some more
I'm getting this crashing also. I have a number of different plugins installed and I haven't yet tried removing any to see if it is a bad interaction..(will do this now)
Oh the first part of my Stack dump involves lua_close (not lua_error as above)
Ok I just removed all but
foo_console
foo_input_std
foo_looks
foo_output_std
foo_ui_std
and I can get this to happen by swapping between any two looks from the components menu in the looks (not the foobar one or the tasktray one. It even happens when I set the default foo_looks.ski as both primary and secondary look...
HTH
thanks for your efforts teetee
now we just have to wait for danZ to visit the topic and give us some insight
btw, anyone got any foo_looks projects on the go??
---
i added some basic playlist support to my new project
(http://www.btinternet.com/~sean.m.kelly/new_project_ss.png)
really nice work here, i've just started using foo_looks since version 2 appeared and its great.
One thing i'd like to see after playing around with it for a a few hours is the ability to not have to have foo_looks running as always on top. From what i can see, if you click on foobar in the taskbar it bring up the main foobar window and not the skin. What i'd like is to be able to bring the skin to the front by clicking on the taskbar. I'm not sure if this is possible though. Maybe it would be possible using a toolbar in a similar way to foo_winbar.
Also with skins that have playlist windows, will it be possible to alter what the playlist displays so i could have it as artist - track or artist - album - track , also will playlist windows be resizeable like winamp.
thanks for any help and keep up the good work
sorry double post
Also with skins that have playlist windows, will it be possible to alter what the playlist displays so i could have it as artist - track or artist - album - track
yes - of course
also will playlist windows be resizeable like winamp.
it's one of the things i am working on now - i'm pretty sure resizing on 1 axis will work (for example, making the window wider).
but it may take me a while before we know if we can do resizing that competes with a typical application window
it's because of the way skin graphics are designed - it's not easy to have graphics that can continue to grow.
my first task is to test resizing windows without any graphics - then we'll know for sure if it is feasible with the current plugin build
i'll keep you informed of any progress i make
note: it may be better to delay this feature until we support 2 seperate look windows
two minor thing I've noticed:
the new position of the track and volume sliders obscures the seemingly un-reposistionable total time selected counter, and less importanltly the dB level...
it's just that I use foobar to burn my audio cd's and knowing how much spare time is pretty good....I know I can right click and choose show info.....
and everytime you restart foobar the small flaoting window interface resets itself to "Standard Mode" ...
(just incase someone wants to know
cheers,
Peter
the new position of the track and volume sliders obscures the seemingly un-reposistionable total time selected counter, and less importanltly the dB level...
yes, there are a couple of design 'faux pas' in the default skin
danZ just wanted to showcase features that would inspire the rest of us
i don't think he expected people to use his look so much
i mean... he only used mspaint
but i'm sure he'd be happy to re-position features if they are overlapping others
and everytime you restart foobar the small flaoting window interface resets itself to "Standard Mode" ...
danZ has already said how to change the default.
you need to open the ski file, or use the overrides section in the preferences..
read more here (http://www.hydrogenaudio.org/forums/index.php?showtopic=17279&view=findpost&p=170737)
really nice work here, i've just started using foo_looks since version 2 appeared and its great.
One thing i'd like to see after playing around with it for a a few hours is the ability to not have to have foo_looks running as always on top. From what i can see, if you click on foobar in the taskbar it bring up the main foobar window and not the skin. What i'd like is to be able to bring the skin to the front by clicking on the taskbar. I'm not sure if this is possible though. Maybe it would be possible using a toolbar in a similar way to foo_winbar.
Also with skins that have playlist windows, will it be possible to alter what the playlist displays so i could have it as artist - track or artist - album - track , also will playlist windows be resizeable like winamp.
thanks for any help and keep up the good work
tk32 is right, resizing the window is possible but a freely sizing window such as the default UI might not work out so well. As he said, the looks are based on static graphics so that they can be, well, better looking. If you've ever looked close you'd see that winamp main controller was not resizable because it too was based on static graphics but the playlist is resizeable because it is just a basic win32 listbox in window. I'd still like to see way to pair down the default UI to just be a playlist (no titlebar, no buttons, no toolbars, etc.) and then a way to customize its appearance even more (borders, etc.). Then, if their were some UI callbacks the default UI as playlist and foo_looks as controller could be a really nice pairing.
Systray support is on the to do list for some upcoming release.
You have to edit the .ski file to change the playlist entry formatting - look for
section ple_common
string fspec ""
thanks for your efforts teetee
now we just have to wait for danZ to visit the topic and give us some insight
btw, anyone got any foo_looks projects on the go??
---
i added some basic playlist support to my new project
(http://www.btinternet.com/~sean.m.kelly/new_project_ss.png)
I'm still using 0.7.5 so first thing I'll do is get on the lastest SDK and release. Then when I get some time I'll look into this issue.
Thanks for the reports and for narrowing it down - looks like some lua cleanup issue during a swap.
hm seems like i'm too stupid to find that playlist
and is it possible to use circles or other things by specifying multiple points that mark the object's angles? If not, I hereby file that request.
It would make nicer buttons possible. Also, I could perhaps start to design my look
hm seems like i'm too stupid to find that playlist
and is it possible to use circles or other things by specifying multiple points that mark the object's angles? If not, I hereby file that request.
It would make nicer buttons possible. Also, I could perhaps start to design my look
To make buttons irregular shaped I support the use of image transparency. If sprite has a transparent color key set then those pixels will not render on the look. Additionally, the mouse in code will only return true if the pointer is over a non-transparent pixel in that sprite. Therefore, in theory, hotspots can be any shape. However, image transparency seems to have some expense in GDI+ blitters so be careful how you use it.
Perhaps, tk32, could post an example of an irregular shaped hotspot as I don't have time to work up an example today.
just noticed it now, when I try to swap looks from the look components menu, foobar crashes; it does not happen if I use the component menu from the systray.
the slider for album art works great, but it would be nice hiding it in the cover look when the mouse is not on the look for example...
great work !
OK, I know what is going on here and will work out a fix for the next RC. Thanks.
you can't declare circular buttons in the code, but it can be done!
here's the trick....
design the graphics as a PNG file, and place the buttons over an invisible background
only the visible parts of the button will react to mouse movement
so you can design any shape button you like
it's technically called a 'pixel-accurate' hotspot
i'll write a guide when i get time
(http://www.btinternet.com/~sean.m.kelly/pixel_accurate_sample.png)
so if i use these as buttons in my look, only the visible pixels will work as the button
[span style='font-size:14pt;line-height:100%']EDIT: this is incorrect[/span] - sorry, i thought it would work
it seems setting a transparent color is the only way to do pixel-accurate hotspots right now... and that has a large cpu overhead
perhaps danZ will think of a way of doing it like above
danZ: GDI already knows how to handle png alpha, surely there will be a way to check for alpha 0
you can't declare circular buttons in the, but it can be done!
here's the trick
design the graphics as a PNG file, and place the buttons over an invisible background
only the visible parts of the button will react to mouse movement
so you can design any shape button you like
it's technically called a 'pixel-accurate' hotspot
i'll write a guide when i get time
example to follow......
tk32, are you going to try using PNG alpha channel to control the transparency w/o specifying list transcolor in the .ski file for the sprite? That won't work now but I just realized it might be possible to use the PNG alpha channel information instead of a fixed color key (thus bypassing the GDI+ color key blitter).
Anyway, if you can work up an example using the current approach I'd appreciate it.
thanks for the insight, now you mention it i do remember that only the playlist window was resizeable in winamp, and i understand why now.
As for you mentioning having the default ui scaled right down to a playlist this sounds interesting especially if you could have it take on the same look as the controller look. When i think about it it could be perfect, a very small controller part with a button to bring up a hidden playlist window with multiple playlists.
Also i found a crash, when switching from danz' default look to another look using the component menu built in to the look, it doesn't seem to do it switching from tk32 new look back to danz' default one in the same way:
edited out the fail log
thanks for the insight, now you mention it i do remember that only the playlist window was resizeable in winamp, and i understand why now.
As for you mentioning having the default ui scaled right down to a playlist this sounds interesting especially if you could have it take on the same look as the controller look. When i think about it it could be perfect, a very small controller part with a button to bring up a hidden playlist window with multiple playlists.
Yes, if you could strip off the menus, titlebar, etc. and then had the ability to change its appearance (more then what is there now I mean) and the ability to have the two windows working together (moving as one, docking to each other) then you'd have the best of both worlds IMHO. That's the reason I still don't want to make foo_looks a UI replacement but rather a UI add-on.
Its in essence the setup we have currently we just need a few more hooks to make them really work well together instead of feeling like 2 disjointed items.
Also i found a crash, when switching from danz' default look to another look using the component menu built in to the look, it doesn't seem to do it switching from tk32 new look back to danz' default one in the same way:
Fixed for next RC.
Yes, if you could strip off the menus, titlebar, etc. and then had the ability to change its appearance (more then what is there now I mean) and the ability to have the two windows working together (moving as one, docking to each other) then you'd have the best of both worlds IMHO. That's the reason I still don't want to make foo_looks a UI replacement but rather a UI add-on.
Its in essence the setup we have currently we just need a few more hooks to make them really work well together instead of feeling like 2 disjointed items.
i think what you're aiming out does sound the best way of doing things, sounds like it could be quite complicated to alter the default ui do fit into you're idea, but i'm not a progammer so it all sounds complicated to me
i just noticed someone posted the crash i found above, i'll edit out the fail log in a minute
I receive the following message in the console every time a new song starts playing:
INFO (foo_looks) : AssetManager:Dumping unused image 'C:\Programmi\foobar2000\components\foo_looks\looks20.jpg'
Using Win2k pro SP4, fb2k v0.7.7, latest foo_looks and Micro layout. Is it normal?
Also, in Micro layout, I would like to remove the playlist content when I mouse over the title and, if possible, replace it with song progress bar (as in v1.0 Mini look, IIRC). Can it be done simply modifying the .ski file (and, if so, can somebody explain how exactly)?
Thanks.
Alessandro
ok
anybody who was following the tutorial (http://www.btinternet.com/~sean.m.kelly/foo_looks/tutorial.htm), i'd like to apologize it took me so long to start continuing it again..
the good news is that i am ready to pipck up where we left off
--
after reading the tutorial, you should have coded 2 buttons that don't do anything...
well.. you can continue the tutorial in this 'how-to guide #001':
how-to guide #001 - adding functions to the playback buttons (http://www.btinternet.com/~sean.m.kelly/how-to_guide_001.txt)
unfortunately it's plain text at the moment - but i'll turn it into beautiful html soon
you can't declare circular buttons in the code, but it can be done!
here's the trick....
design the graphics as a PNG file, and place the buttons over an invisible background
only the visible parts of the button will react to mouse movement
so you can design any shape button you like
it's technically called a 'pixel-accurate' hotspot
i'll write a guide when i get time
foo_looks2.0 RC3 doesn't appear to cope with some jpgs with a low number of colours. The file I've uploaded here (http://www.hydrogenaudio.org/forums/index.php?showtopic=17575&view=findpost&p=173529) displays black.
If I then open it in PSP 8.0 and increase the colour depth to 256 colours and resave it, it loads fine.
Thought it might be useful information to know..
function onrightbuttonup(this)
fb2k_menuCommand("Components/Look/Swap")
end
that crashes foobar... had to do it that way because i forgot what the simple way of swapping skins was.... so this is just an fyi thing =)
foo_looks2.0 RC3 doesn't appear to cope with some jpgs with a low number of colours. The file I've uploaded here (http://www.hydrogenaudio.org/forums/index.php?showtopic=17575&view=findpost&p=173529) displays black.
If I then open it in PSP 8.0 and increase the colour depth to 256 colours and resave it, it loads fine.
Thought it might be useful information to know..
thanks for identifying the problem
we're trying to encourage designers to consider the PNG graphics format as a standard - since it has support for alpha values, and has lossless compression
it also works really well with GDI+
i don't think danZ did much testing with other formats, especially lossy ones such as JPEG
but keep up the bug reports - that's how these things improve
With starting of Foobar2000 with foo_looks v2.0rc1-rñ3 the screen to the instant becomes black. Such occurs with the change of display resolution in some games or a change of display resolution in the properties of video adapter.
Also the very occurs when I change looks by command looks_swap or change type of standart look (compact to album, etc.).
With use foo_looks of a version of 1.x such it did not occur.
This phenomenon occurs only in Windows XP, in W2K - everything is normal. My video adapter - GeForse 4MX, the version of detonator - any.
we're trying to encourage designers to consider the PNG graphics format as a standard - since it has support for alpha values, and has lossless compression
Oh I agree totally with PNG for the parts of the skin but JPEG is superior (compression-wise) for photographic imagery such as album art (which this image is - I thought I'd mentioned it in my message but obviously not ). Also all websites I've ever seen offering album art to download (saves scanning your own CDs) only have JPEGs and converting JPEG to PNG is a waste of space as it retains all the lossy artifacts and pushed the size up ten-fold..
we're trying to encourage designers to consider the PNG graphics format as a standard - since it has support for alpha values, and has lossless compression
Oh I agree totally with PNG for the parts of the skin but JPEG is superior (compression-wise) for photographic imagery such as album art (which this image is - I thought I'd mentioned it in my message but obviously not ). Also all websites I've ever seen offering album art to download (saves scanning your own CDs) only have JPEGs and converting JPEG to PNG is a waste of space as it retains all the lossy artifacts and pushed the size up ten-fold..
apologies
i didn't realise you were talking about albumart
yes, all my albumart is jpg too - although i don't have any jpgs with less than 256 colours. (all those are GIFs)
With starting of Foobar2000 with foo_looks v2.0rc1-rñ3 the screen to the instant becomes black. Such occurs with the change of display resolution in some games or a change of display resolution in the properties of video adapter.
Also the very occurs when I change looks by command looks_swap or change type of standart look (compact to album, etc.).
With use foo_looks of a version of 1.x such it did not occur.
This phenomenon occurs only in Windows XP, in W2K - everything is normal. My video adapter - GeForse 4MX, the version of detonator - any.
I've noticed this too and I think I know why it is happening. I'll try to fix that for RC4.
foo_looks2.0 RC3 doesn't appear to cope with some jpgs with a low number of colours. The file I've uploaded here (http://www.hydrogenaudio.org/forums/index.php?showtopic=17575&view=findpost&p=173529) displays black.
If I then open it in PSP 8.0 and increase the colour depth to 256 colours and resave it, it loads fine.
Thought it might be useful information to know..
I don't do anything special with any image formats, I just pass the filename off to GDI+ and have it load one of its Gdiplus::Image objects. Maybe MS image codecs don't do well with certain, less common pixel formats. I don't think I can do much about this w/o writing my own image loaders for the various formats which I don't intend to do. But thanks for the report so that folks can maybe convert their cover art to at least 8BPP pixel formats.
foo_looks2.0 RC3 doesn't appear to cope with some jpgs with a low number of colours. The file I've uploaded here (http://www.hydrogenaudio.org/forums/index.php?showtopic=17575&view=findpost&p=173529) displays black.
If I then open it in PSP 8.0 and increase the colour depth to 256 colours and resave it, it loads fine.
Thought it might be useful information to know..
I don't do anything special with any image formats, I just pass the filename off to GDI+ and have it load one of its Gdiplus::Image objects. Maybe MS image codecs don't do well with certain, less common pixel formats. I don't think I can do much about this w/o writing my own image loaders for the various formats which I don't intend to do. But thanks for the report so that folks can maybe convert their cover art to at least 8BPP pixel formats.
Actually, after thinking about this I'm wrong - I do actually do something to the image when its cover art - I scale it using a scaled blit into a secondary Gdiplus::Bitmap object that has the same pixel format as the source image. I bet what is happening is that the scaled image doesn't have a palette (index image formats are such a pain in the @ss) so all index lookups return the color black.
The image you posted is reporting itself as 0x00030803 which means it is an 8 bits per pixel index image format. Did you post the wrong image because you were talking about ones with 4BPP or less. But this image shows up black too so are you sure you got album art to work that uses 8BPP?
foo_looks2.0 RC3 doesn't appear to cope with some jpgs with a low number of colours. The file I've uploaded here (http://www.hydrogenaudio.org/forums/index.php?showtopic=17575&view=findpost&p=173529) displays black.
If I then open it in PSP 8.0 and increase the colour depth to 256 colours and resave it, it loads fine.
Thought it might be useful information to know..
I don't do anything special with any image formats, I just pass the filename off to GDI+ and have it load one of its Gdiplus::Image objects. Maybe MS image codecs don't do well with certain, less common pixel formats. I don't think I can do much about this w/o writing my own image loaders for the various formats which I don't intend to do. But thanks for the report so that folks can maybe convert their cover art to at least 8BPP pixel formats.
Actually, after thinking about this I'm wrong - I do actually do something to the image when its cover art - I scale it using a scaled blit into a secondary Gdiplus::Bitmap object that has the same pixel format as the source image. I bet what is happening is that the scaled image doesn't have a palette (index image formats are such a pain in the @ss) so all index lookups return the color black.
The image you posted is reporting itself as 0x00030803 which means it is an 8 bits per pixel index image format. Did you post the wrong image because you were talking about ones with 4BPP or less. But this image shows up black too so are you sure you got album art to work that uses 8BPP?
Fixed it.
The image you posted is reporting itself as 0x00030803 which means it is an 8 bits per pixel index image format. Did you post the wrong image because you were talking about ones with 4BPP or less. But this image shows up black too so are you sure you got album art to work that uses 8BPP?
My assumption that it was 4BPP was based on opening it in PSP and finding that I could increase its depth to 8BPP. Now that I look again, I can apparently also decrease its depth to 4BPP. PSP reports it as 8BPP as well so perhaps it doesn't relate to the BPP and more to the indexing issue you mention. It certainly is a little odd to see a paletted JPEG..
If your code works with GIFs (which I understand are always paletted), then presumably you can reuse that bit to deal with paletted JPEGs?
lol! that's what happens when someone comes in to ask you a weird question while you're writing a reply
Thanks for fixing it.
v2.0 RC4 Available (http://www.loodi.com/foo_looks_beta.zip)
Changelog:1. Fixed bug in scaled cover art image wrt indexed pixel formats.
2. Believe I have fixed the black flash display resolution problem.
3. Fixed "Swap" crash bug
4. Added support for pixel accurate hotspots using PNG alpha channel information
sprite foobar
string image "bar.png"
bool pixelaccurate true
A sprite set up this way will only report that the mouse is inside it when over a pixel with an alpha value > 0. This allows you to make a hotspot of any shape. PNG is the recommended format for foo_looks at it readily supports 32BPP ARGB pixel formats and seems to provide the best rendering performance and uses lossless compression.
New look:Aero has updated his AeroAmp look which should work with any Winamp 2.X skin (provided you extract the assets from the zip file) with only slight modifications (fonts, colors, etc.).
AeroAmp (http://www.loodi.com/aeroamp.zip)
Failed to load, LUA.DLL not found
*finds it*
Failed to load, LUA.DLL not found
*finds it*
Installation Instructions - see starter post of this thread (http://www.btinternet.com/~sean.m.kelly/foo_looks/install.htm)
Hey, Danz
I find next small bug:
If main window of Foobar not opened when Foobar started (minimized it to tray at last session, then close Foobar and start Foobar again) change volume with mouse wheel not working in looks 2.0, when Foobar started and mouse pointed to looks window.
I must activate main window, then select looks window and only then mouse wheel volume change is working.
WhyTF don't you make this a _REAL_ UI replacement??!
Peter made a great API for custom user interfaces, and yet yuo simply don't use it.
WhyTF don't you make this a _REAL_ UI replacement??!
Peter made a great API for custom user interfaces, and yet yuo simply don't use it.
Because I've yet to make or see someone else make a look that can do everything the default UI can do. foo_looks 2.0 is approaching a point of having enough flexibility to make a robust UI but personally, I still think there are certain operations that are easier and work better in the standard Win32 widget based UI.
If you are happy to have a look as the only UI that won't allow you access to all the things you might be used to in the default UI then I'd be happy to hook foo_looks into the UI replacement services.
I think most users are still happy with current configuration of fb2k as playlist manager and foo_looks and small, nice looking playback controller. Correct me if I'm mistaken.
I think most users are still happy with current configuration of fb2k as playlist manager and foo_looks and small, nice looking playback controller. Correct me if I'm mistaken.
I certainly prefer it how it is at the moment. It is great to be able to customize how I show the Album art and Now Playing information while still retaining a separate, powerful playlist viewer.
Because I've yet to make or see someone else make a look that can do everything the default UI can do. foo_looks 2.0 is approaching a point of having enough flexibility to make a think most users are still happy with current configuration of fb2k as playlist manager and foo_looks and small, nice looking playback controller. Correct me if I'm mistaken.
Totally agree with you Danz.
There are way too many features in the original UI to merge into a nice little look !
I think most users are still happy with current configuration of fb2k as playlist manager and foo_looks and small, nice looking playback controller. Correct me if I'm mistaken.
Heh, one of the reasons I don't play with foo_looks more is because it doesn't properly replace the GUI. I'd use it occasionally for fun if I could get it to make the main FB2K GUI go away for a little bit. I dislike the inconsistency of having a standard Win GUI window as a playlist and a custom-drawn graphical window as a "control".
You're right that there aren't any looks out there that replace everything, but if the code to do a complete replacement was there, there would be more incentive to make foo_looks a full-yfeatured GUI replacement.
Chicken and egg problem, all over again. Anyhow, add me to the list of people who'd like to see foo_looks hook into the GUI replacement SDK.
Is it possible to hook it in and still retain the "supplemental UI" mode if the user desires?
i think you've underestimated the capabilities of the plugin
i think i can safely say that we can do 'everything' that the main UI can do
it just requires a little specialised scripting
perhaps i should explain the shift in plugin design from versions 1.0 - 2.0
-----
in 1.0, danZ provided a way to hook all the most common skin elements into your looks using minimal code. in other words, you just passed it a ski that was, in effect, a list of variables
for example, if you wanted a progress bar, you just specified how wide, what position, and what colour/graphic
this approach was great for amateurs, but more enthusiastic designers soon reached the inherent limitations of this approach.
then danZ included LUA. he realised he could still code those basic UI components, that users could import (using foo_looks_common.ski), but it also meant that those users who wanted something more special, could completely re-code those components, or even build new ones from scratch
in a way, danZ has done less.. to allow us to do more
if that makes sense.
he has still given us all the functions required to trigger everything that can be triggered from the main UI
nobody has written a skin that clones the main UI because everyone was happy with the concpet of a nice small controller that could be docked on thye desktop while the playlist is minimized to the system tray
however, if you would like to see the capabilities as a clone - i will try to write a user-friendly skin that behaves as much like the main ui as possible
hope this helps explain some things
i think i can safely say that we can do 'everything' that the main UI can do
it just requires a little specialised scripting
Is it possible to display the playlist entries using the Title formatting in the preferences, including the colour codes?
i think i can safely say that we can do 'everything' that the main UI can do
it just requires a little specialised scripting
Is it possible to display the playlist entries using the Title formatting in the preferences, including the colour codes?
damn you
ok, text & colour is not a strong point at the moment
our text can only be a solid colour, or a two colour gradient
if you want multiple colours, you will need more than one text field to display each item
as for the formatting code, you can cut & paste it into your skin
however, all colour codes will be ignored by foo_looks
there is no way to extract the string from the preferences yet
perhaps i can make a convenient cut & paste area for formatting strings
damn you
ok, text & colour is not a strong point at the moment
our text can only be a solid colour, or a two colour gradient
if you want multiple colours, you will need more than one text field to display each item
as for the formatting code, you can cut & paste it into your skin
however, all colour codes will be ignored by foo_looks
ok
(sorry to push this more)
Since there isn't a way to measure the width of any particular text (the reason danz can't do only-when-necessary scrolling), wouldn't it be quite hard to reconstruct a playlist with a different colour for Artist, Album, Tracknumber, Title etc. ? You wouldn't know where to place the text fields.. and they'd change with each entry.
no it's fine
you only need to update the plindex for each field
the text positions remain static, and you just update them as required
it's all automated from an LUA script, like in the default look
So you could make a playlist that looked like
this (http://www.hydrogenaudio.org/forums/index.php?showtopic=17695&view=findpost&p=174434)?
no
that's not possible
the fields would be fixed width if you wanted to have different colours
i could do the same format in a single colour
perhaps we should ask danZ about supporting colour codes
then it would be possible
How-to guide #002 is done
how-to guide #001 - adding functions to the playback buttons (http://www.btinternet.com/~sean.m.kelly/how-to_guide_001.txt)
How-to guide #002 - writing more interesting scripts (http://www.btinternet.com/~sean.m.kelly/how-to_guide_002.txt)
enjoy,
tk32
as for the formatting code, you can cut & paste it into your skin
What about adding an interface to config_var_string::g_get_value(), so you can do
format = fb2k_getConfigString("titleformat:Playlist")
in a skin?
as for the formatting code, you can cut & paste it into your skin
What about adding an interface to config_var_string::g_get_value(), so you can do
format = fb2k_getConfigString("titleformat:Playlist")
in a skin?
Yeah, I was planning on adding something like that anyway, I guess now is better then later.
I think most users are still happy with current configuration of fb2k as playlist manager and foo_looks and small, nice looking playback controller. Correct me if I'm mistaken.
Heh, one of the reasons I don't play with foo_looks more is because it doesn't properly replace the GUI. I'd use it occasionally for fun if I could get it to make the main FB2K GUI go away for a little bit. I dislike the inconsistency of having a standard Win GUI window as a playlist and a custom-drawn graphical window as a "control".
You're right that there aren't any looks out there that replace everything, but if the code to do a complete replacement was there, there would be more incentive to make foo_looks a full-yfeatured GUI replacement.
Chicken and egg problem, all over again. Anyhow, add me to the list of people who'd like to see foo_looks hook into the GUI replacement SDK.
Is it possible to hook it in and still retain the "supplemental UI" mode if the user desires?
Thanks for your point of view. I'll see if there is a clean and simple way to support both modes (UI addon and UI replacement).
damn you
ok, text & colour is not a strong point at the moment
our text can only be a solid colour, or a two colour gradient
if you want multiple colours, you will need more than one text field to display each item
as for the formatting code, you can cut & paste it into your skin
however, all colour codes will be ignored by foo_looks
ok
(sorry to push this more)
Since there isn't a way to measure the width of any particular text (the reason danz can't do only-when-necessary scrolling), wouldn't it be quite hard to reconstruct a playlist with a different colour for Artist, Album, Tracknumber, Title etc. ? You wouldn't know where to place the text fields.. and they'd change with each entry.
There is a way to measure strings in GDI+ I just didn't get it to work first try and left it for more interesting tasks. I can revisit this issue.
Supporting the color codes could be a challenge. The only way I can think to do it is to parse every string that gets rendered and resetting the current pen every time I encounter a color code block. Sounds like a pain. I'd be curious to know how PP handles this in the default UI since he must be ownerdrawing the list control for the playlist entries.
Supporting the color codes could be a challenge. The only way I can think to do it is to parse every string that gets rendered and resetting the current pen every time I encounter a color code block. Sounds like a pain. I'd be curious to know how PP handles this in the default UI since he must be ownerdrawing the list control for the playlist entries.
Presumably he uses uTextOutColors (or rather uTextOutColorsTabbed) from utf8api.dll. Source code is included in the SDK, so you can see how it's done.
Supporting the color codes could be a challenge. The only way I can think to do it is to parse every string that gets rendered and resetting the current pen every time I encounter a color code block. Sounds like a pain. I'd be curious to know how PP handles this in the default UI since he must be ownerdrawing the list control for the playlist entries.
Presumably he uses uTextOutColors (or rather uTextOutColorsTabbed) from utf8api.dll. Source code is included in the SDK, so you can see how it's done.
Unless I misunderstand those he must be parsing the source string somewhere else to create multiple calls to uTextOuColors with the appropriate substring and color. That's what I was saying I'd have to do - parse each string and break out each chunk that is a particular color then set the pen, render, then get next chunk on through. I can't use these functions since my rendering is all custom and uses GDI+ for text rendering.
ok, I added
fb2k_getConfigString(name) for the next RC so that you can do something like
look_setFspec(sprite,fb2k_getConfigString('titleformat:Playlist'))
And as expected if you have color information in your playlist formatting it shows up like this
004000
in the rendered string since I don't have a method for supporting multiple colors in a single formatted text string.
I'll start looking into a way to support this feature or a future version.
if anyone would like to play with my new skin project, you can get it here:
(http://www.btinternet.com/~sean.m.kelly/new_project_ss.png)
download here. (http://www.btinternet.com/~sean.m.kelly/tk32-new_skin_project.zip)
i've tried to organise the code in a very user-friendly way.
there are no core scripts used, i have written my own
i import the scripts from new_project_common.ski
i am currently working on the playlist mode, so it's still pretty buggy.
any suggestions are appreciated
Unless I misunderstand those he must be parsing the source string somewhere else to create multiple calls to uTextOuColors with the appropriate substring and color. That's what I was saying I'd have to do - parse each string and break out each chunk that is a particular color then set the pen, render, then get next chunk on through. I can't use these functions since my rendering is all custom and uses GDI+ for text rendering.
uTextOutColors calls text_out_colors, which does parse color codes. The passed color is the default color as set in preferences.
Unless I misunderstand those he must be parsing the source string somewhere else to create multiple calls to uTextOuColors with the appropriate substring and color. That's what I was saying I'd have to do - parse each string and break out each chunk that is a particular color then set the pen, render, then get next chunk on through. I can't use these functions since my rendering is all custom and uses GDI+ for text rendering.
uTextOutColors calls text_out_colors, which does parse color codes. The passed color is the default color as set in preferences.
OK, but unfortunately it takes a DC and probably uses ExtTextOut or something to allow the text position to be maintained while it draws all the text chuncks. Won't work for foo_looks since I render my text with GDI+ and don't want to give up the anti-aliased text support so I'll still have to create my own custom version of those functions.
Thanks for the help though as its given me some ideas on how to implement all of this.
how can i avoid this:
(http://home.arcor.de/jpichler/extern/foo_looks.jpg)
if anyone would like to play with my new skin project, you can get it here:
download here. (http://www.btinternet.com/~sean.m.kelly/tk32-new_skin_project.zip)
i've tried to organise the code in a very user-friendly way.
there are no core scripts used, i have written my own
i import the scripts from new_project_common.ski
i am currently working on the playlist mode, so it's still pretty buggy.
any suggestions are appreciated
I'd like to see the "core" playback buttons in the same place in all 3 modes (pl, id3,vis) - perhaps under those tabs as when in the current pl mode.
Also, I'm working on an idea to support image tiling which would allow for better dynamic resizing - ie. the top and side borders could be a small image that is tiled over and over again on the x or y axis to allow the window border to be any size. To see what I mean take a look at the graphics used for a winamp 2.x playlist window.
(http://www.loodi.com/pledit.png)
if you look close you'll notice that there are grapics used for the borders that can be tiled inbetween the static corner graphics to produce a window any size.
I'll just add somethign like
sprite foobar
list rect int { 0,0,400,15 }
list srcoff int { 20,20 }
list tilesize int { 10, 15 }
in this case the image would tile a 10 X 15 image to fill the 400 pixel width of the sprite.
how can i avoid this:
(http://home.arcor.de/jpichler/extern/foo_looks.jpg)
by keeping the look in always-on-top mode
or by moving the mouse over the look
please tell me what you did in order to produce this display
how can i avoid this:
(http://home.arcor.de/jpichler/extern/foo_looks.jpg)
by keeping the look in always-on-top mode
or by moving the mouse over the look
please tell me what you did in order to produce this display
I have deactivated always on top, because i just want to have it on the desktop. moving the mouse over the look brings back its original look. to produve it i just opened browser (firebird) and closed it again.
edit: opening windows explorer does the same job, like every other windows i guess.
i think i can safely say that we can do 'everything' that the main UI can do
it just requires a little specialised scripting
I didn't intend to imply otherwise; I meant that no-one's taken the effort yet to develop a look that can completely replace the original UI, with full playlist support and all. I didn't mean to imply foo_looks wasn't capable of it.
DanZ: Image tiling sounds great. Personally I have quite alot of catching up to do, but thanks to tk32's dedicated work it will be alot easier than it could have been. Keep up the good work both of you!
tk32: It's strange, but your new look isn't visible here (WinXP SP1). I just downloaded it, but nothing shows up when I activate it. Any ideas? DanZ's default look works as it should though.
Btw: A collection of links to tutorials about making nice graphics would be appreciated. Maybe as a new thread at first and then move it to one of the sites later on... Just a thought.
tk32: It's strange, but your new look isn't visible here (WinXP SP1). I just downloaded it, but nothing shows up when I activate it. Any ideas? DanZ's default look works as it should though.
i have no idea why it won't display for you in windows XP
i have tried the skin on win2k & winXP, using
foo_looks 2.0 RC4 and it works fine on both.
can anybody else confirm this bug?
as for graphics tutorials, i can teach you what i know about placement and design
but i'm no expert on button graphics techniques etc...
few pointers for those making graphics though:
- use software that supports layers (Photoshop or PSP)
- when saving as a PNG, use the 'extract for web' feature (and select PNG 24-bit)
- always keep a copy with the layers intact
- avoid flattening layers unless it is really necessary
- if you want to customize somebody else's skin, then ask him/her for the PSD file with the layers
- save each update as a seperate file, instead of overwriting the original (eg my_skin_001.psd, my_skin_002.psd)
Sorry, I was stupid and I'll go hide now...
I tried to activate new_project_common.ski
Sorry, I was stupid and I'll go hide now...
I tried to activate new_project_common.ski
don't worry
i've done that before too
i've renamed the scripts file to
new_project_common.luathat solves the problem
i should have thought of this sooner
(although, i suppose now i should remove the non-lua code from the start of the file)
@tk32: I like your new look (Hmm, "skin" works better when you say it like that... ).
Btw: Is the small "now playing marker" supposed to follow when scrolling the playlist? Is it indended to indicate the direction of the current track or something.
Sorry, I was stupid and I'll go hide now...
I tried to activate new_project_common.ski
I've done this too - its because the imported .ski file has no window section so the window ends up at 0 width and height. Using a different extension is a good idea since it will prevent the imported file from showing up in the preferences page and will prevent accidental drag and drop. I'll do this for the foo_look_common.ski too. Maybe we could come up with some convention for the extension for imported files even though it is arbitrary.
.inc ?
Btw: Is the small "now playing marker" supposed to follow when scrolling the playlist? Is it indended to indicate the direction of the current track or something.
it's supposed to point to the current track
but it's not working yet
atm, it only points to the current track if it is visible in the playlist - i need to make it disappear otherwise
i'm working on it now
---
btw danZ, i think we need to have an extension that indicates that it will be used for lua scripts only
i was naughty to place some section declarations in mine as well. i will move them to the ski now
.lua is cool i think
Btw: Is the small "now playing marker" supposed to follow when scrolling the playlist? Is it indended to indicate the direction of the current track or something.
it's supposed to show the current track
but it's not working yet
i'm working on it now
---
btw danZ, i think we need to have an extension that indicates that it will be used for lua scripts only
i was naughty to place some section declarations in mine as well. i will move them to the ski now
.lua is cool i think
but the imported files aren't restricted to lua code and it might be useful to have common sections in their, section color is a fine example of this.
The imported files can have any mixture of all the supported .ski file syntax.
i think it's a bad idea to unnecessarily de-couple parts of the look code
the only reason i seperated my lua to a seperate file was for readabilities sake
i personally think it's a bad idea to encourage spreading the code amongst multiple files
...especially while all skins share the same folder
i was merely trying to seperate form from function so people could read the 2 distinctly
----
UpNorth & all upcoming 'look' designers:
here are some nice Photoshop tutorials:
http://www.eyeball-design.com/fxzone/frames02.htm (http://www.eyeball-design.com/fxzone/frames02.htm)
http://phong.com/tutorials/ (http://phong.com/tutorials/)
http://www.gurusnetwork.com/tutorials/photoshop/index.html (http://www.gurusnetwork.com/tutorials/photoshop/index.html)
http://photoshopgurus.info/index.htm (http://photoshopgurus.info/index.htm)
is it possible for the standard look of foo_looks 2.0 RC to remember its layout?
is it possible for the standard look of foo_looks 2.0 RC to remember its layout?
not yet, but you can set a default in the SKI, or using the overrides section.
the question was answered on page1:
http://www.hydrogenaudio.org/forums/index....ndpost&p=170737 (http://www.hydrogenaudio.org/forums/index.php?showtopic=17279&view=findpost&p=170737)
I've done a test of the standard Foo_looks under WIN 98 SE, these are the results
--> GDIPlus dll installed in the Foobar directory
--> No errors at load time, Foo_looks is loaded properly
--> Correct menu but nothing shows up
--> Crash when stopping foobar
llegal operation:
Code: C0000005h, flags: 00000000h, address: 019AE9ECh
Access violation, operation: read, address: FFFFFFFFh
Call path:
WinMain=>app_shutdown
This is the first crash logged by this instance.
Code bytes (019AE9ECh):
019AE9ACh: 90 90 90 90 8B 01 50 E8 EC 65 00 00 C3 90 90 90
019AE9BCh: 90 90 90 90 8B C1 33 C9 89 08 89 48 04 89 48 08
019AE9CCh: 89 48 0C 89 48 10 89 48 14 89 48 18 89 48 1C C3
019AE9DCh: 90 90 90 90 83 EC 2C 53 8B 1D D4 1C 9D 01 56 57
019AE9ECh: 8B 43 04 50 68 B0 1E 9D 01 E8 76 2C FE FF B9 0B
019AE9FCh: 00 00 00 BE C0 1E 9D 01 8D 7C 24 14 83 C4 08 F3
019AEA0Ch: A5 8B 4B 04 51 FF 15 18 53 9C 01 F7 D8 1B C0 B9
019AEA1Ch: 0B 00 00 00 F7 D8 8D 74 24 0C BF C0 1E 9D 01 89
Stack (0066FD1Ch):
0066FCFCh: 00000197 00010216 0066FD1C 0000019F
0066FD0Ch: BFF55769 10003173 00000000 0000001E
0066FD1Ch: BFF55769 10003173 00000000 019B5A69
0066FD2Ch: 019D1A08 019AF27C 10003173 004011FD
0066FD3Ch: 004296BB 0066FD70 0000000F 004296FE
0066FD4Ch: 0066FD70 0000000F 004105DA 00000000
0066FD5Ch: 81858BE5 00000000 00000244 00000113
0066FD6Ch: 00000010 113773C4 4B48B387 58ABDF8B
0066FD7Ch: 38E56CBC 00000007 00000236 019D1A00
0066FD8Ch: 0066FD9C 0040F154 00000000 00000000
0066FD9Ch: 0066FE38 0042DC3E 00400000 00000000
0066FDACh: 81858BE5 00000001 00000000 818391B0
0066FDBCh: 00560000 C0000005 81858BE5 00790A40
0066FDCCh: 00000000 00000000 00790C30 00000001
0066FDDCh: 00000044 00000000 00000000 00000000
0066FDECh: 00000000 00000000 00000000 00000000
0066FDFCh: 00000000 00000000 00000000 00000401
0066FE0Ch: 00000001 00000000 00000000 000011A2
0066FE1Ch: 00000000 0066FDB4 0066FB4C 0066FF68
0066FE2Ch: 0042DC68 004306D0 00000000 0066FF78
Registers:
EAX: 019C5E48, EBX: 00000000, ECX: 019D1A00, EDX: 00000010
ESI: 10003173, EDI: BFF55769, EBP: 0066FD8C, ESP: 0066FD1C
Failed to get module/symbol info.
Version info:
foobar2000 v0.7.7
ANSI
Let me know if you need more information
how can i avoid this:
(http://home.arcor.de/jpichler/extern/foo_looks.jpg)
by keeping the look in always-on-top mode
or by moving the mouse over the look
please tell me what you did in order to produce this display
Maybe its that strange "feature" I've heard about EndPaint... If something invalidates a region of your window while you're still repainting it (between BeginPaint and EndPaint) the whole window region will still be validated by the EndPaint call. Does anyone know a better solution than avoiding BeginPaint/EndPaint?
I've done a test of the standard Foo_looks under WIN 98 SE, these are the results
Sorry, foo_looks only works on Win2K and above. I have too many shared libraries that use Win32 calls to be able to utilize the utf8api.dll correctly at this time.
how can i avoid this:
(http://home.arcor.de/jpichler/extern/foo_looks.jpg)
by keeping the look in always-on-top mode
or by moving the mouse over the look
please tell me what you did in order to produce this display
Maybe its that strange "feature" I've heard about EndPaint... If something invalidates a region of your window while you're still repainting it (between BeginPaint and EndPaint) the whole window region will still be validated by the EndPaint call. Does anyone know a better solution than avoiding BeginPaint/EndPaint?
I'm a bit perplexed by these strange redraw problems because I use a double buffered rendering system and I flip the entire back buffer (full window contents) everytime I receive a WM_ERASEBKGND message. I draw the invalid regions in the backbuffer but any time I'm drawing to the screen DC it is the full window. That is, I never draw just part of the window to the actual device which is what this looks like.
To me this behavior seems to indicate the windows is invalidating my window and then not telling me ( or I need to catch one or more messages that I'm not currently).
I'll keep trying to figure it out - for now it will just remain as a nuisance
v2.0 RC5 Available (http://www.loodi.com/foo_looks_beta.zip)
Changelog.
1. Added support for image tiling
sprite foo
string image "bar.png"
list rect int { 0,0,200,5}
list tilesize int {5,5}
The image in bar.png will be tiled in a 5 X 5 grid the sprite's rect.
How might this be useful? Check out the small demo look, foo_dlg.ski, included in this package.
2. Added
fb2k_getConfigString(name)
which returns contents of the specfied config string
potential use - set the playing item display to whatever the user has configured in fb2k title formatting prefs.
function onattach(this)
look_setFspec(this,fb2k_getConfigString('titleformat:Playlist'))
end
love the new demo skin
thanks for showing us how powerful tiling is.
i spent the last few days thinking about how to achieve this feature without tiling
now i'll add it to my project skin in the form of a resizable corner handle
--
note - i'm a little confused as to why you made rounded corners, despite this feature still not being implemented....
is this a hint that it'll be in RC6 ??
i spent the last few days thinking about how to achieve this feature without tiling
now i'll add it to my project skin in the form of a resizable corner handle
It would have been a pain - sizing with a mouse move (drag) will be a little trickier with scripting just becuse you'll need to track the mouse, etc. I was thinking about maybe trying to add a few more facilities to make window sizing easier like builting support for a sizing border so you'd get the nice little sizing cursor like on other windows and then maybe some facility for allowing sprites to autosize or automove with the window. This would eliminate a lot of scripting. This is still just an idea. Meanwhile, you should be able to script something that's decent.
Well, guys, I must say, foo_looks became quite impressing! I never thought about using it before, but now, seeing tk32's "new project" look, I definitely see the potential A true Winamp-beater in eye-candy
Just to make some sense: the default look from danZ gives 100% cpu usage, even doing nothing. Might be normal, I was not interested enough to double-check it. WinXP with SP1, foobar 0.7.7b.
i'm really looking forward to trying out this new foo looks, but i have a major problem.. i followed the installation instructions exactly, got the lua dlls and everything.. i backed up my old foo looks dir and dll thankfully, because when i started foobar with foo_looks 2.0 rc5, i got a steady stream of errors in the console.. it seemed to find an error on every single line of code.. when it reached 1000 lines i alt ctrl del'd it and deleted the dll and foo looks dir, then renamed the backups and everything works fine again..
sys specs: fb2k 0.7.7b, foo_looks 2.0 rc5
previous skin: amp5 look
winxp sp1
i also have foo_osd installed.. dunno if that matters
perplexed,
bogs
Foo_looks seems to be doing something weird with certain title formatting strings - http://pelit.koillismaa.fi/fb2k/strings.php?f=40 (http://pelit.koillismaa.fi/fb2k/strings.php?f=40) gives a syntax error and eats up all your CPU time.
that's unfortunate
ok, here's the deal until danZ can answer:
unless you are a look designer - stick to RC4 for the time being
in RC4, foo_looks didn't try to interface with the title-formatting at all
i will inform danZ of the potential title-formatting bug
I am using RC4 (I think) - http://www.loodi.com/foo_looks_beta.zip (http://www.loodi.com/foo_looks_beta.zip), right?
I am using RC4 (I think) - http://www.loodi.com/foo_looks_beta.zip (http://www.loodi.com/foo_looks_beta.zip), right?
the
www.loodi.com build is always the latest (in this case RC5)
so i have uploaded RC4 for those that may want to downgrade, at least until we have had a chance to investigate this potential bug
foo_looks 2.0 RC4 (http://www.btinternet.com/~sean.m.kelly/foo_looks_2.0_RC4.zip)
thanks tk32, that's just what i needed
i'm also using the dynamic title formatting from upnorth, for the record..
edit: errrr.. apparently that wasn't what i needed.. same error
thanks tk32, that's just what i needed
i'm also using the dynamic title formatting from upnorth, for the record..
edit: errrr.. apparently that wasn't what i needed.. same error
i've just tested UpNorth's 'dynamic' with RC5 and it works fine
win2k pro sp4
foobar 0.7.7
foo_looks 2.0 RC5
though let's not speculate until danZ has had an opportunity to check things out
EDIT:if you are still getting errors after downgrading, you may need to delete these DLL's from the foo_looks folder:
luaCOMExtension.dllluaRegexExtension.dllthis is just a speculation - but they might be responsible for the errors
(since they were not present in the RC4 install)---
btw
Kalmark, thanks for the praise on my new skin.
it's far from complete, and i'm no artist, but yes... i'm sure you can all see the potential
EDIT:
if you are still getting errors after downgrading, you may need to delete these DLL's from the foo_looks folder:
luaCOMExtension.dll
luaRegexExtension.dll
this is just a speculation - but they might be responsible for the errors
(since they were not present in the RC4 install)
since i just deleted the folder and renamed my old one those dlls aren't around anymore, but i just opened the RC5 zip and saw that there is no RegEx.dll included.. maybe that's the source of the problem?
edit: oh you already edited that out
i'm confused now
let me explain - i help danZ beta test the plugin
so i sometimes get strange named files in my folder
RegEx.dll was an early verison of luaRegexExtension.dll
sorry to confuse you
ahh i see..
well i just tried changing to another formatting string (thanks foo_syfm ) specifically Gems by Lyx, and foo looks 2.0 works.. so i guess the problem is with the latest version of upnorth's dynamic format..
if anybody can figure out why it would give an error on literally every single line of code, (and especially how to fix it) i'd appreciate it.. dynamic has been my favorite formatting string so far, and while i like the general look of Gems, i prefer the album mode look of dynamic..
thx for the help on this, tk32 and Chun-Yu.
peace,
bogs
(ps: sorry all of my posts on this forum have been reporting problems and asking for help.. i'll try to be more helpful if i can ever find a question i'm capable of answering.. )
the best contribution anyone can make is to attempt to design their own look
we love 'look' contributions
luaCOMExtension.dll
luaRegexExtension.dll
Neither of those are needed or being referenced by any code - they are for some stuff I'm testing out.
that's unfortunate
ok, here's the deal until danZ can answer:
unless you are a look designer - stick to RC4 for the time being
in RC4, foo_looks didn't try to interface with the title-formatting at all
i will inform danZ of the potential title-formatting bug
I'll have to take a look at this its obviously related to
function onattach(this)
look_setFspec(this,fb2k_getConfigString('titleformat:Playlist'))
end
which I added to my look in RC5.
It worked fine with my playlist formatting (the default foobar2000 settings) but apparently opened up a big can of worms in other cases.
thanks danZ,
..... so here's the slightly modified version of the default look that will work with RC5 (http://www.loodi.com/foo_looks_beta.zip):
foo_looks.ski (http://www.btinternet.com/~sean.m.kelly/foo_looks.ski)(modified)
it works exactly how it should, but without reading the title-formatting.
i simply removed the following...
function onattach(this)
look_setFspec(this,fb2k_getConfigString('titleformat:Playlist'))
end
note:the bug is not present in any of the other 'looks' (including mine)
that works perfectly at this end, tk32.. i had extremely high cpu usage with the default 2.0 look but without that line it's no more than a look from v1.
thanks a ton B)
Danz,
I ask you again.
If Foobar200 started minimized to tray and then I activate looks - change volume level with mouse wheel unavailable, I must activate main windows of Foobar and point mouse to looks again. Only in this case I must change volume level with mouse wheel.
Is this a bug or peculiarity of looks.
My seconf question: in foo_looks_common.ski and another available fo me skins I change real 100.0 to integer 100 and 0.02 to 1/50 (regional setting in lua not work). I not found any errors, when I made this changes. It is correct?
Danz,
I ask you again.
If Foobar200 started minimized to tray and then I activate looks - change volume level with mouse wheel unavailable, I must activate main windows of Foobar and point mouse to looks again. Only in this case I must change volume level with mouse wheel.
Is this a bug or peculiarity of looks.
this is normal behaviour for the look
the mouse wheel only triggers when the look is in focus / activated
but you could script a look that allows mouse wheel whenever the pointer is hovering over the look
it doesn't sound like a bug - but just how danZ intended it to work
---
...as for the 2nd question... i can't help you - you'll have to wait for danZ to reply.
however, i can tell that LUA doesn't honour the integer type when making calculations, so in other words, the results to these two calculations would be the
same:
100.0 / 3.0
= 33.33333333333334
100 / 3
= 33.33333333333334
that might clear up some things.. or not.
--
perhaps you might even like to investigate how to customize the mouse wheel code yourself - it would be a nice little challenge (if you enjoy those). and i promise that it is not too hard
just check out my first 2 guides (#001 (http://www.btinternet.com/~sean.m.kelly/how-to_guide_001.txt),#002 (http://www.btinternet.com/~sean.m.kelly/how-to_guide_002.txt)) for a solid introduction to LUA scripting basics, and if you have any more problems, you can ask me by email
in fact, if anyone has any coding/LUA/graphics problems, they can email me..
()
or ICQ (486325)
My seconf question: in foo_looks_common.ski and another available fo me skins I change real 100.0 to integer 100 and 0.02 to 1/50 (regional setting in lua not work). I not found any errors, when I made this changes. It is correct?
This is a 'feature' of Lua. The Lua parser accepts floating point numbers in the same format as used in virtually any other programming language (basically the English format). However, to convert a string to the actual floating point value that is then used in Lua, it uses the strtod function from the C library which is locale-dependent.
For my foo_lua project, I patched Lua to use a custom version of lua_str2number, which is by default #defined as str2d in lobject.c.
Lua supports only one number type natively. By default this is set to 64 bit floating point. If you need integer division, use floor(a/b) (for a positive quotient), or ceil(a/b) (for a negative quotient), to get the same results as with integer division.
Thanks tk32, it works fine with the modified ski.
Danz,
I ask you again.
If Foobar200 started minimized to tray and then I activate looks - change volume level with mouse wheel unavailable, I must activate main windows of Foobar and point mouse to looks again. Only in this case I must change volume level with mouse wheel.
Is this a bug or peculiarity of looks.
Sorry, I meant to reply to your first post. Yes, there is some bug where the look will not get the WM_MOUSEWHEEL message until you click another window and then click the look. Not intentional, I'm trying to track it down.
My seconf question: in foo_looks_common.ski and another available fo me skins I change real 100.0 to integer 100 and 0.02 to 1/50 (regional setting in lua not work). I not found any errors, when I made this changes. It is correct?
Lua has a setlocale function which seemed to work for me when I tried it but others report that it does not work. The changes you have made should give the same outcome without running into any locale specfic problems.
My seconf question: in foo_looks_common.ski and another available fo me skins I change real 100.0 to integer 100 and 0.02 to 1/50 (regional setting in lua not work). I not found any errors, when I made this changes. It is correct?
This is a 'feature' of Lua. The Lua parser accepts floating point numbers in the same format as used in virtually any other programming language (basically the English format). However, to convert a string to the actual floating point value that is then used in Lua, it uses the strtod function from the C library which is locale-dependent.
For my foo_lua project, I patched Lua to use a custom version of lua_str2number, which is by default #defined as str2d in lobject.c.
Lua supports only one number type natively. By default this is set to 64 bit floating point. If you need integer division, use floor(a/b) (for a positive quotient), or ceil(a/b) (for a negative quotient), to get the same results as with integer division.
Any idea why
setlocale()
won't work?
That is, every script that was going to rely on floating point contants, etc. could call this before doing any floating point operations.
I tried this locally, in that I set the local to Russian and the lua parser then correctly gave me errors for 100.0, etc. when I ran my look. But when I instructed the Russian user to use setlocale("en-us") it did not correctly handle the 100.0, etc.
Foo_looks seems to be doing something weird with certain title formatting strings - http://pelit.koillismaa.fi/fb2k/strings.php?f=40 (http://pelit.koillismaa.fi/fb2k/strings.php?f=40) gives a syntax error and eats up all your CPU time.
I "preprocess" tags to support things like _istoggled, _isvisible, etc. so that one field can change based on other events, conditions in the look. Because of this I have a lot of tag processing overhead since every field displaying formatted text must be reformatted on a regular basis to reflect these event changes. Having a large tag like the one you are using for your playlist just isn't feasible and will eat all the CPU time while the look continually tries to update its text. This overhead will get even worse if I attempt to add support for color information for multi-colored strings.
I'll remove the line from the default ski file to match tk32's modified version that doesn't use fb2k_getConfigString() to set the formatting.
2 choices
1. I can eliminate most of the custom tag processing, this might be an option since scripting could fill some of the gaps that would be opened up. This would allow me to reduce the tag overhead.
2. Leave it as is and looks use quick and efficient tag formatting.
I can go either way as I'm big on using very simple formatting.
Any idea why
setlocale()
won't work?
That is, every script that was going to rely on floating point contants, etc. could call this before doing any floating point operations.
I tried this locally, in that I set the local to Russian and the lua parser then correctly gave me errors for 100.0, etc. when I ran my look. But when I instructed the Russian user to use setlocale("en-us") it did not correctly handle the 100.0, etc.
Are you sure that a Russian Windows supports en-us? You should check the return value of setlocale to see if it was successful. Otherwise, setlocale("C") should work on all Windows installations.
Locales don't affect floating point operations, only floating point parsing - both parsing of the Lua source as well as explicit (tonumber("1.0")) and implicit ("1.0"+1) string to floating point conversions.
(http://www.btinternet.com/~sean.m.kelly/new_project_ss.png)
suggestions please
i need to know what to do from here
i was considering:
- pop-up button panels (for playback/playlist controls)
- support for resizing the skin
- replace the scroll up/down buttons in PL view with a custom scrollbar
()
i was considering:- pop-up button panels (for playback/playlist controls)
- support for resizing the skin
- replace the scroll up/down buttons in PL view with a custom scrollbar
Tha last two I support, the first I don't understand And, as someone mentioned before, you should put the play/stopt/etc. buttons to the same place in all styles of the look ( not just two of them, in vis too! ), maybe on left side if the style selection part.
Just one "dev" question: wherefrom do you get the vis data? In your look's code I could not find an entry for this. (Though I was just doing a quick search for "vis" in the file )
Keep up the good work!
suggestions please
About the mini mode:
- make its height equal to window titlebar
- add (if not already there) a clickable progress bar of the current song (perhaps on mouseover?)
- place one button to close the look and one button to close fb2k (but don't ask me how to graphically differentiate them )
- make artist - title scroll when there's not enough space to fully display those info
HTH.
Alessandro
here's a version you can test:
tk32-new_skin_project.zip (http://www.btinternet.com/~sean.m.kelly/tk32-new_skin_project.zip)
notes:
- watch the
vis mode carefully - the spectrum fades lighter & darker
- left-click the close button to quit - right-click to hide the look.
- in PL mode, click the "
current"/"
focus" buttons to jump to that item - or double-click to set that item (
set-focus|
play focus) - try it and see, it will make sense
- click the
PL|
ID3|
VIS buttons to change mode, and right-click them for
toggle-fb2k|
info box|
skin-info- "
c" button shows the console
the code is quite neat - but it's still a little hacky
you're all welcome to borrow code
Kalmark, the vis code is here:
sprite spectrum
list rect int { 9 42 220 40 }
list srcoff int { 290 85 }
int bands 20
list rendermap int {}
list scripts string { "spectrumAnim" }
it's a built-in feature of foo_looks, and the scripts i've written only control when it displays
enjoy
I really like your new skin and I would like to give you some feedback.
I think that the play buttons in the small windows are vague; maybe they could be a bit darker?
A double click beside the menu changes the skin from up-down and vs.
There are too many typefaces, and it’s not clear if a button is clickable or not.
I don’t like the yellow highlighting and cursive font of the song that is playing.
The play button moves around and can be found on 3 different places and in “VIS” mode you can not find them at all.
I would like to see a scrollbar in the menu instead of the up/down buttons.
I like the font in the menu and current|focus. “PL ID3 VIS” aren’t so visible.
Too many frames around the play list.
Just my 50 cents, keep up the good work.
Regards,
Örjan Sjöholm
suggestions please
About the mini mode:
- make its height equal to window titlebar
- add (if not already there) a clickable progress bar of the current song (perhaps on mouseover?)
- place one button to close the look and one button to close fb2k (but don't ask me how to graphically differentiate them )
- make artist - title scroll when there's not enough space to fully display those info
HTH.
Alessandro
100% agreed
cool
thanks for the feedback
this is exactly the sort of comments i needed
i'll get to work on the next update soon..
note - this skin is & was 'in progress' and playback buttons had not been properly designed yet (or placed)
how many rc's will foo_looks 2.0 go thru before its public, also is 2.0 compatible with 1.0 skins?
how many rc's will foo_looks 2.0 go thru before its public, also is 2.0 compatible with 1.0 skins?
I have one more version, RC6, about ready to release and then will wait for tk32 to finish up his new look. Then I think it is ready. I was hoping to have a few more looks because, to answer your question, 1.x looks are not compatible without serious reworking which means 2.0 will only have a handful of choices.
tk32:
for my 2 cents:
-I think the yellow highlight is alright - it actually makes it easy to see which song is being played...personal preference I spose.
-loving the 6 second fast fwd if you right click the track progress bar in ID3 [down] mode
- maybe an option to display track remaining time?
and this s sure to be a dumb question: but foobar takes about 3 times as long to load now (compared to when neither foo_looks or Foo_tunes was installed)...is therre any chance this load time will be improved...Fast loading was one of the main draw cards of foobar....
2 cents over and out
I think most users are still happy with current configuration of fb2k as playlist manager and foo_looks and small, nice looking playback controller. Correct me if I'm mistaken.
Heh, one of the reasons I don't play with foo_looks more is because it doesn't properly replace the GUI. I'd use it occasionally for fun if I could get it to make the main FB2K GUI go away for a little bit. I dislike the inconsistency of having a standard Win GUI window as a playlist and a custom-drawn graphical window as a "control".
You're right that there aren't any looks out there that replace everything, but if the code to do a complete replacement was there, there would be more incentive to make foo_looks a full-yfeatured GUI replacement.
Chicken and egg problem, all over again. Anyhow, add me to the list of people who'd like to see foo_looks hook into the GUI replacement SDK.
Is it possible to hook it in and still retain the "supplemental UI" mode if the user desires?
Thanks for your point of view. I'll see if there is a clean and simple way to support both modes (UI addon and UI replacement).
Exactly what i said b4........ may be last time i should have shut more loudly so shuld have been done this time round.
A GUI system that combine both current and foo_looks into one. Giving Both the maximum benifit of customization and simplity........
However, i would like to know the resources usage for this comaring to using to Foobar without it and Winamp 2.x and 5........
Would be interesting.........
when will foo looks 2.0 b released? just looking for like an estimation
2.0 will be released very soon
we are in the very final stages of testing RC6, and just waiting for my lazy a$$ to finish my new skin so that it can be released in conjunction with it.
my guess is about 4 days
btw: is anyone out there working on any skins / graphics for the plugin?
we'd love some contributions .. in any form
if it's lack of support, or knowledge, then please don't hesitate to let me know. i'm happy to write as many tutorials as it takes for you all to be comfortable with the process.
and if you're worried about coding, then just show me your Photoshop/PSP skills and let me do the rest for you.- the basic skin graphics guidelines are here (http://www.hydrogenaudio.org/forums/index.php?showtopic=16500&view=findpost&p=164147)
- the beginners coding tutorial is here (http://www.btinternet.com/%7esean.m.kelly/foo_looks/tutorial.htm)
- the additional coding tutorials (text only) are here: #001 (http://www.btinternet.com/~sean.m.kelly/how-to_guide_001.txt) & #002 (http://www.btinternet.com/~sean.m.kelly/how-to_guide_002.txt)
i am looking for suggestions on what to write for tutorial guide #003
please support us and make a contribution[/i]
()
can't wait, i stopped using foobar cuz of the error cant wait to switch back hehe
2.0 will be released very soon
we are in the very final stages of testing RC6, and just waiting for my lazy a$$ to finish my new skin so that it can be released in conjunction with it.
my guess is about 4 days
btw: is anyone out there working on any skins / graphics for the plugin?
we'd love some contributions .. in any form
if it's lack of support, or knowledge, then please don't hesitate to let me know. i'm happy to write as many tutorials as it takes for you all to be comfortable with the process.
and if you're worried about coding, then just show me your Photoshop/PSP skills and let me do the rest for you.- the basic skin graphics guidelines are here (http://www.hydrogenaudio.org/forums/index.php?showtopic=16500&view=findpost&p=164147)
- the beginners coding tutorial is here (http://www.btinternet.com/%7esean.m.kelly/foo_looks/tutorial.htm)
- the additional coding tutorials (text only) are here: #001 (http://www.btinternet.com/~sean.m.kelly/how-to_guide_001.txt) & #002 (http://www.btinternet.com/~sean.m.kelly/how-to_guide_002.txt)
i am looking for suggestions on what to write for tutorial guide #003
please support us and make a contribution[/i]
()
Will it be updated for the 0.8 SDK by RC7?
the 0.8 SDK is a beta - so it's not a high priority at the moment
however, when 0.8 becomes stable we will definitely rebuild the plugin with the new sdk.
until then - we will continue to support the most stable version of foobar (0.7.7b)
---
remember, the fb2k community grows from user contributions. foo_looks is a great way for all you non-programmers to contribute to the community.
design us some graphics
----
p.s. - it was not necessary for neufo51 to quote my entire post for that simple meesage
[span style='font-size:8pt;line-height:100%']</rant>[/span]
Will it be updated for the 0.8 SDK by RC7?
The current RC works with 0.8 - I've already tried it so there is no hurry to recompile it with the 0.8 SDK as I won't really gain anything until I'm able to review the new 0.8 features and see what I can add to foo_looks.
weee.... got my own skin in progress, but it will take some time to get it done.
little preview:
(http://home.arcor.de/theurmel/skin.png)
updated ^^
playbutton is a little big, but who cares....
that's about how my new skin looked when i started (and it only looks a little better now)
the graphics gradually get refined as you work on things
but i'm so pleased that there really are users out there working on skins
now who else is making a skin?
p.s. - i'll be on ICQ tonight working on my skin, in case anybody has anything they want to ask/discuss
my UIN is 486325
Is it still so that the alpha blending support is only for different layers of the skin?
Is it still so that the alpha blending support is only for different layers of the skin?
You can alpha blend the whole window with the desktop at a constant value
section window
int alphablend [0-100]
sprites can be individually blended with the sprites under them using same syntax
sprite foobar
int alphablend [0-100]
weee.... got my own skin in progress, but it will take some time to get it done.
little preview:
Nice! You'll also be testing 2 features not used yet, window transparency and pixel accurate hotspots. I see you are already using PNG images so that is good since they seem to give the best rendering performance (32 bit, non-interlaced).
Is it still so that the alpha blending support is only for different layers of the skin?
You can alpha blend the whole window with the desktop at a constant value
section window
int alphablend [0-100]
sprites can be individually blended with the sprites under them using same syntax
sprite foobar
int alphablend [0-100]
Yes I know that, but what I meant was is there a way to get nice freeform skins (ie a circle) with antialiased edges?
Is it still so that the alpha blending support is only for different layers of the skin?
You can alpha blend the whole window with the desktop at a constant value
section window
int alphablend [0-100]
sprites can be individually blended with the sprites under them using same syntax
sprite foobar
int alphablend [0-100]
Yes I know that, but what I meant was is there a way to get nice freeform skins (ie a circle) with antialiased edges?
nope, you can make part of the window transparent just like in 1.x with
section window
list transcolor int { a r g b }
but it won't give an antialiased edge. I need to do some more research into blending with the desktop.
Ok thanks for clearing that up. I believe that if (when) you get it implemeted we'll see a huge amount of new cool looks
Ok thanks for clearing that up. I believe that if (when) you get it implemeted we'll see a huge amount of new cool looks
Well, if those looks started appearing I might be forced to work on it a little harder
just to let everyone know.. i am coding an automatic text-scroll / text-drag script right now
this should lay to rest any worries about the ability to scroll text if it's too long
i'll let you know when it's working.
EDIT: it's working
the script triggers only for text fields that are overflowing
- wait 2 seconds
- start scrolling left
- when the whole string has been displayed begin scrolling right again
- ... then go left again
- ... etc...
a ping pong effect
eventually i'll add support for a traditional wrap-around scroll, and add the ability to click-drag the string left or right with the mouse
ok
here's an early version of the textscroll script for you to test
it's been enabled for ID3 & VIS mode only so far, and only triggers when the text is too long
(http://www.btinternet.com/~sean.m.kelly/tk32_scroll_test.png)
tk32-new_skin_project.zip (http://www.btinternet.com/~sean.m.kelly/tk32-new_skin_project.zip)
---
and just for good measure - here's a fun little skin idea called 'no graphics'
no_graphics.ski (http://www.btinternet.com/~sean.m.kelly/no_graphics.ski)
(http://www.btinternet.com/~sean.m.kelly/no_graphics.png)
be warned - it's not very good! (yet)
I am working on a skin, as well as some foo_looks 1.xx to 2 conversions.
Hey,
tk32I tried use new version of you skin new_skin_project.ski with textscroll future.
When I activate skin, I have next console log
INFO (foo_looks) : Sprite 'progBar' is visible with empty rectangle
INFO (foo_looks) : Sprite 'progBar2' is visible with empty rectangle
INFO (foo_looks) : Sprite 'nowPlaying' is visible with empty rectangle
ERROR (foo_looks) : attempt to call global `look_measureTextAbs' (a nil value)
ERROR (foo_looks) : attempt to call global `look_measureTextAbs' (a nil value)
ERROR (foo_looks) : attempt to call global `look_measureTextAbs' (a nil value)
Thus, the text in looks not scrolling.
I have foo_looks2.0 rc5, find this bug when run foobar version 7.7c and 8.0 beta 4.
Hey, tk32
INFO (foo_looks) : Sprite 'progBar' is visible with empty rectangle
INFO (foo_looks) : Sprite 'progBar2' is visible with empty rectangle
INFO (foo_looks) : Sprite 'nowPlaying' is visible with empty rectangle
ERROR (foo_looks) : attempt to call global `look_measureTextAbs' (a nil value)
ERROR (foo_looks) : attempt to call global `look_measureTextAbs' (a nil value)
ERROR (foo_looks) : attempt to call global `look_measureTextAbs' (a nil value)
I got the same problem with non scrolling text as above, with the latest foo_looks and foobar beta.
Also i have the look set to always on top, but it seems a bit tempremental in that it doesn't always stay on top. No idea whats causing this or any workaround as it just seems to do it randomly.
I might try and work on some looks, although i'm neither a graphic artist or coder so it might take me a while to get anywhere with it.
i am very sorry
the text scroll uses a brand new feature from RC6 called look_measureTextAbs()
since danZ didn't publically release RC6, you had no way of knowing this
thanks to pIv & BUSH for noticing so soon.
here is the link to foo_looks 2.0 RC6 (http://www.btinternet.com/~sean.m.kelly/foo_looks_2.0_RC6.zip)
i hope danZ won't mind
Thanks for posting RC6, it fixed the error generated however the scroll doesn't seem to be working for me. I take it its meant to scroll any text on the ID3 and Vis screen if it doesn't all fit on the look when static.
that's right
it happens more in VIS mode since all the text is on 1 line
i can't see any reason why it shouldn't work for you - i thoroughly tested it last night
same here, it seems that it won't get triggered ...
it only adds '...' to the end
hmm
something must be wrong
it should never add '...' to the end
EDIT: ok - i found an initialization bug.
try changing the track a few times, the '...' should disappear
looking into a fix now..
thanks for spotting the bug, initialization was something i didn't test, since i update my skin dynamically as i make changes to the code
Yeah, seems to be working fine after changing tracks a few times using the buttons in the look. Looks really good btw, excellent work
As BUSH wrote
Yeah, seems to be working fine after changing tracks a few times using the buttons in the look. Looks really good btw, excellent work
But it is not good idea start scrolling only by pressure of buttons in the look.
When I start Foobar again - I an not scrolling text.
As BUSH wrote
Yeah, seems to be working fine after changing tracks a few times using the buttons in the look. Looks really good btw, excellent work
But it is not good idea start scrolling only by pressure of buttons in the look.
When I start Foobar again - I an not scrolling text.
yes - i am very aware of this
as i said.. it is a bug.
i am working on it today (when i get some free time)... fix will be ready tonight
EDIT: i think the problem is that the script initializes before the id3 has been read
is there any chance of people making this into a gallery of skin ideas / concepts
i'd love to see some graphics / drawings of skin ideas
it seems i'm the only one with enough guts to put my graphics under scrutiny
(i forgot URMEL sorry)
i'm no artist, as you can see - so don't be embarassed of your own designs
let's brighten up this post with some graphics! or even text descriptions of skin ideas
[span style='font-size:14pt;line-height:100%']
the first 10 users who show us a skin concept / graphic will win a prize**[/span]
[span style='font-size:8pt;line-height:100%']**conditions apply. you may be required to make a premium rate toll call to receive your gift.[/span]
This is a quick scetch I did a while ago (it's not even finished yet, it's actually only a template). It's meant to be just a simple informational display with only basic buttons, as I like the looks more like that. No playlist functionality is (or was) planned. God only knows if I ever am bored enough to finish it.
The problem is that as it's going to be only an informational look, It should blen well with things you use while playing music and currently it does really bad work on that.. Perhaps it would work well on a white background, but definitely not on my black one
But here's the pic:
[[span style='font-size:11pt;line-height:100%']**conditions apply. you may be required to make a premium rate toll call to receive your gift.[/span]
Yeah guys, if you get those graphics in, you get to have phone sex with tk32!
Sorry, it was too funny to resist.
that's cool
it's fair game.
i'm just glad you realised it was a joke
-------------------------
Official release of Foo_looks 2.0 RC6 (http://www.btinternet.com/~sean.m.kelly/foo_looks_2.0_rc6.zip)
this came straight from danZ
few changes since the version i posted earlier
--------------------------
finally, if anyone wants to work on this one - it's available from me (i'll send the PSD)
just a concept i didn't have time to develop (i think i need to make it smaller for a start)
(http://www.btinternet.com/~sean.m.kelly/gits_suitcase.png)
p.s. more updates coming later - i'm gonna try to finish a few open projects by tonight
Thanks tk32. I'm giving my shot at a skin. It will be a bit simple, and no telling how successful I will be but it's worth a try.
@tk32: Can you upload that psd somewhere, I think I could learn something from it.
I'm not saying I'll turn it into something usable though.
your wish is my command
(http://www.btinternet.com/~sean.m.kelly/tk32_metal_suitcase_ss.png)
tk32_metal_suitcase.rar (http://www.btinternet.com/~sean.m.kelly/tk32_metal_suitcase.rar)
note: this is not a skin - it's an Adobe Photoshop CS 8 .PSD file
it's nothing special - just plenty of layer effects
ok - it's time to stop being a release candidate and go final
here it is...
[span style='font-size:21pt;line-height:100%']foo_looks 2.0 (http://www.loodi.com/foo_looks.zip)[/span]
no more rc versions
all major bugs have been isolated and fixed
... and plenty new features added along the way.
----
the currently available 'complete' skins are (click for download):
default skin (included with the plugin)
fooAMP2 (http://www.btinternet.com/~sean.m.kelly/fooAMP2.rar)
&
the micropanel (http://www.btinternet.com/~sean.m.kelly/tk32-micropanel.zip) (aka 'new skin project')
(http://www.btinternet.com/~sean.m.kelly/micropanel_ss.png)
there are plenty more skins in development - we hope to see them all soon.
thanks danZ,
enjoy.
Could you also post a compile with 0.8 SDK ? Thanks.
that's cool
it's fair game.
i'm just glad you realised it was a joke
-------------------------
Course. Otherwise I would not have made such an outrageous comment.
Could you also post a compile with 0.8 SDK ? Thanks.
The released version works with 0.8 and there is no need for me to make a compile against that SDK at this time.
To tk32
Your look micropanel is fine, but:
1. Not work - activate main windows by rightmouseclick on "PL"
2. Show console by leftmouseclick on "C" not work also.
In skin fooAMP2 volume changed by mouse wheel, but volume slider not moved in this case. Main windows in fooAMP2 not activated also.
The bug with activation main windows is absent in foo_looks_beta2.0rcX
@tk32
Thanks for this great work, I really like your micropanel, but there is one little suggestion:
What about integrating a volume slider? (Or am I just too blind to find it?)
There's a little plugin on http://pelit.koillismaa.fi/plugins/general.php (http://pelit.koillismaa.fi/plugins/general.php) called "No-delay volume changing (foo_mixer)" that integrates "simple access to your system mixer main volume slider (and mute switch)" in foobar2000's playback drop-down menu.
Is it possible to integrate these features in your micropanel?
To tk32
Your look micropanel is fine, but:
1. Not work - activate main windows by rightmouseclick on "PL"
2. Show console by leftmouseclick on "C" not work also.
In skin fooAMP2 volume changed by mouse wheel, but volume slider not moved in this case. Main windows in fooAMP2 not activated also.
The bug with activation main windows is absent in foo_looks_beta2.0rcX
i don't understand
the bug must be on your machine only
- right clicking PL works
- the 'c' console button works
as for fooAMP2 - the mouse wheel update is a real bug, so thanks. i will fix it
as for the other thing about main windows - i don't understand
could you try to explain it for me
sorry
---
bernard,
you're right - i have omitted a volume control from micropanel - but i can easily add one
in fact, the vertical white bar was reserved for that very reason
to be honest - i wanted to know how important it was for people to have one.
i will have an update by the end of the day
First concept done
(http://home.arcor.de/theurmel/skin.png)
todo:
- adjusting size. seems a little big
- cleanup
- seperating buttons from core
- doing pressed-buttons
1. Thanks for your reply, I'm looking forward to the upcoming volume slider.
in fact, the vertical white bar was reserved for that very reason
That bar looked quite suspicious to me (I tried to click and/or adjust it for about a hundred times without success before I asked for a volume slider)
Are you gonna add the standard volume slider with the delay (as it is in fooAMP2) or can I expect a no-delay volume slider? (I would prefer the latter...)
2.
the bug must be on your machine only
Sorry to say that, but same problem here: PL right click -> no effect, c-click -> no effect
Just started experimenting with foo_looks 2.0 and would appreciate an answer to a question I have:
I am attempting to load and display album art at its native aspect ratio, but am having trouble getting the image size (in pixels) of an image loaded using look_loadImage().
I've looked at http://www.btinternet.com/~sean.m.kelly/functions_list.txt (http://www.btinternet.com/~sean.m.kelly/functions_list.txt) but have not been able to find a related function.
To tk32
This bug with rightclick on "PL" an leftclick on "C" I hav only with version foobar 0.8b5.
I install foobar 0.77b again and all is OK!
I change in looks string to "PL" button
fb2k_menuCommand('Foobar2000/Activate main window')
to string
fb2k_menuCommand('Foobar2000/Exit').
That work in both versions of Foobar.
Also command: fb2k_menuCommand('Components/Show console') not work with Foobar 0.8b5.
To tk32
Your look micropanel is fine, but:
1. Not work - activate main windows by rightmouseclick on "PL"
2. Show console by leftmouseclick on "C" not work also.
In skin fooAMP2 volume changed by mouse wheel, but volume slider not moved in this case. Main windows in fooAMP2 not activated also.
The bug with activation main windows is absent in foo_looks_beta2.0rcX
i don't understand
the bug must be on your machine only- right clicking PL works
- the 'c' console button works
as for fooAMP2 - the mouse wheel update is a real bug, so thanks. i will fix it
as for the other thing about main windows - i don't understand
could you try to explain it for me
sorry
---
bernard,
you're right - i have omitted a volume control from micropanel - but i can easily add one
in fact, the vertical white bar was reserved for that very reason
to be honest - i wanted to know how important it was for people to have one.
i will have an update by the end of the day
tk32,
I have the same problems with micropanel and the main window problem with fooAMP 2.0 using foo_looks 2.0 and foobar 0.8b4.
I fixed the prob in fooAMP 2.0 by substituting this list scripts string in the 'sprite plButton' section:
list scripts string { "[function onleftbuttonup(this) fb2k_menuCommand('Foobar2000/Activate or hide main window') end]" }
That got the PL button to show/hide the fb2k main window.
For micropanel, I had to make a similar change in the list scripts string in the 'sprite pltab' section:
list scripts string { "[function onrightbuttonup(this) fb2k_menuCommand('Foobar2000/Activate or hide main window') end]", "switchMode[i=1 init=look_getValue('presets','startmode')]" }
in order to get the fb2k main window to show/hide by right-clicking 'PL'.
For the left-click 'c' problem, I think pIv has it right. The fb2k_menuCommand 'Components/Show console' doesn't seem to work in foobar 0.8. Substituting 'Components/History' or 'Components/Playlist Find...' works, but 'Components/Show console' does nothing.
Thanks, Megadeus, PL right-click works perfectly now.
BTW, for the left-click 'c' problem:
I just consciously misinterpret the 'c' as an abbreviation for 'config' and use fb2k_menuCommand('Foobar2000/Preferences')
Any good ideas for a useful 'c'-right-click?
here it is...
foo_looks 2.0 (http://www.loodi.com/foo_looks.zip)
Time to start a fresh thread ...
Just started experimenting with foo_looks 2.0 and would appreciate an answer to a question I have:
I am attempting to load and display album art at its native aspect ratio, but am having trouble getting the image size (in pixels) of an image loaded using look_loadImage().
I've looked at http://www.btinternet.com/~sean.m.kelly/functions_list.txt (http://www.btinternet.com/~sean.m.kelly/functions_list.txt) but have not been able to find a related function.
I don't have functions for any manipulations or information on images except for loading
look_loadImage(filename)
look_loadThumbImage(filename,newwidth,newheight)
and setting a loaded image to a sprite
look_setImage(image)
I can add the ones you suggested for next release.
To tk32
This bug with rightclick on "PL" an leftclick on "C" I hav only with version foobar 0.8b5.
I install foobar 0.77b again and all is OK!
I change in looks string to "PL" button
fb2k_menuCommand('Foobar2000/Activate main window')
to string
fb2k_menuCommand('Foobar2000/Exit').
That work in both versions of Foobar.
Also command: fb2k_menuCommand('Components/Show console') not work with Foobar 0.8b5.
menu_manager was one of the classes that was changed/extended for 0.8 and it appears that those changes break some of the menu related commands. It is always going to be problematic since the menu API relies on strings for most features and those strings might change from one release to another.
So, I'll revert my previous statement and change it to "foo_looks 2.0 *mostly* works with 0.8 Betas". But, this does show the advantage of scripted looks since you are easily able to correct the problem on your own.
I am attempting to load and display album art at its native aspect ratio, but am having trouble getting the image size (in pixels) of an image loaded using look_loadImage().
I don't have functions for any manipulations or information on images except for loading
[snipped]
I can add the ones you suggested for next release.
Thanks for considering my suggestion (well, it was actually a question ). A function to retrieve the width and height of an image would be really useful for people who want to display album art at its original aspect ratio.
First concept done
Are you going to need help with the scripting?
thanks to everyone for isolating, and in most cases, fixing the menu bugs in my skins
i am still using good old 0.7.7b so i was not aware of the potential problems of referencing menu commands.
it's really nice to see people using initiative and modifying looks to their own needs
that's really cool
sorry i wasn't here earlier to answer the questions.
when i load this i get an error message, lua.dll not found
then you've been wanking too much
you need to install the LUA dll's
read the first post on the first page of this topic
perhaps danZ should make an installer that includes LUA
was the playlist_format_title_ex crash in the old version a bug in the foo looks gui?
I've never been able to get foo_looks running under win98, but I figured I'd try again with v2.0. With GDI+ and the lua.dlls installed, foobar boots find but components->looks->(any option) does nothing. When I go to preferences->looks it just says "(empty page)" and sort of does a funky refresh.
When I exit fb, I get this failure.txt:
Illegal operation:
Code: C0000005h, flags: 00000000h, address: 013CFEECh
Access violation, operation: read, address: FFFFFFFFh
Call path:
WinMain=>app_shutdown
This is the first crash logged by this instance.
Code bytes (013CFEECh):
013CFEACh: 90 90 90 90 8B C1 33 C9 89 08 89 48 04 89 48 08
013CFEBCh: 89 48 0C 89 48 10 89 48 14 89 48 18 89 48 1C C3
013CFECCh: 90 90 90 90 8B C1 33 C9 89 48 04 89 48 18 C3 90
013CFEDCh: 90 90 90 90 83 EC 2C 53 8B 1D 44 2D 3F 01 56 57
013CFEECh: 8B 43 04 50 68 20 2F 3F 01 E8 B6 25 FE FF B9 0B
013CFEFCh: 00 00 00 BE 30 2F 3F 01 8D 7C 24 14 83 C4 08 F3
013CFF0Ch: A5 8B 4B 04 51 FF 15 20 63 3E 01 F7 D8 1B C0 B9
013CFF1Ch: 0B 00 00 00 F7 D8 8D 74 24 0C BF 30 2F 3F 01 89
Stack (0067FD1Ch):
0067FCFCh: 0000017F 00210216 0067FD1C 00000187
0067FD0Ch: BFF55769 100036BA 00000000 00000024
0067FD1Ch: BFF55769 100036BA 00000000 013D6F51
0067FD2Ch: 013F2A78 013D077C 100036BA 004011A0
0067FD3Ch: 0043189D 0067FD70 00000009 004318E0
0067FD4Ch: 0067FD70 00000009 00411211 00000000
0067FD5Ch: 8162C3A2 00000000 00000720 00000113
0067FD6Ch: 0000000A 113773C4 4B48B387 58ABDF8B
0067FD7Ch: 38E56CBC 00000007 000002D0 013F2A70
0067FD8Ch: 0067FD9C 0040FF0E 00000000 00000000
0067FD9Ch: 0067FE38 004367E5 00400000 00000000
0067FDACh: 8162C3A2 00000001 00000000 81618D50
0067FDBCh: 00570000 C0000005 8162C3A2 007A09E0
0067FDCCh: 00000000 00000000 007A0BC0 00000001
0067FDDCh: 00000044 00000000 00000000 00000000
0067FDECh: 00000000 00000000 00000000 00000000
0067FDFCh: 00000000 00000000 00000000 00000401
0067FE0Ch: 00000001 00000000 00000000 000011A2
0067FE1Ch: 00000000 0067FDB4 0067FB4C 0067FF68
0067FE2Ch: 00436810 00439CA8 00000000 0067FF78
Registers:
EAX: 013E6E98, EBX: 00000000, ECX: 013F2A70, EDX: 0000000A
ESI: 100036BA, EDI: BFF55769, EBP: 0067FD8C, ESP: 0067FD1C
Failed to get module/symbol info.
Version info:
foobar2000 v0.8 beta 2
ANSI
stripe/ben
this has been discussed before
unfortunately we are not able to support win98
sorry
[span style='font-size:8pt;line-height:100%']p.s. dumping the failure.txt wasn't necessary[/span]
First concept done
Are you going to need help with the scripting?
Most likely.
I'll start preparing the skin for scripting tomorrow. I'll ask if I need help.
excellent
try to get as much of the interface ready as possible
all the sprites / statemaps in place
then danZ & myself will help you with some nice custom scripts
is there anything special that you wanted the skin to do?
(http://home.arcor.de/theurmel/skin.png)
looks like that orange section would make a good volume bar
or better still, turn that mute button into a <- arrow, and make it slide the play controls in/out from behind the rest of the skin.
... and we could make the progress bar slide out when the mouse is hovering over the skin
... and a mini mode which was just the play control oval
then danZ & myself will help you with some nice custom scripts
I'm working on per pixel alphablending with the desktop after getting some good pointers from kode54 (foo_osd author). It should be possible to not only support this irregular shape but also to blend the edges or other portions with the desktop and/or windows behind the look. I've made some progress in this so stay tuned.
this is looking very exciting!
alpha-blending is working already (i just tried a beta build from danZ)
however, when foo_looks redraws the skin graphics, it seems to onion skin over the old update
the result is that the alpha areas of the skin get a little more opaque every time you hover over the skin
eg..
(http://www.btinternet.com/~sean.m.kelly/alpha_demo.png)
by after - i mean about 10 hovers. it gets gradually more opaque with each one
this is just for demo puropses - there is a gradient to alpha over the controls, and a completely invisible rectangle on the right
[span style='font-size:8pt;line-height:100%'](i also downgraded the colour-depth of the screenshot so it was smaller in size - so the gradient does not appear as smoothly as it does in real life)[/span]
notice, however, that the completely transparent pixels are unaffected
however, i'm sure this can fixed
great work danZ
http://home.arcor.de/theurmel/skin_raw.png (http://home.arcor.de/theurmel/skin_raw.png)
Buttons extracted from core. Maybe i've got to take the triangle out or make it round if we want to get the "click-onto-the-button-and-the-controlls-come-out"-thingy to work.
[edit]
Question: Is PNG transparency supported? I didn't find any docs about this topic. Maybe I overread something. plz don't hit me
[edit2]
Jup, I just started to play around a little bit with the script.
I hope to get the thing done until sunday.
[edit3]
Seems like sunday is a little early this week.
Buttons in place in the script, but I seem to not be able to get the elapsed time into the skin. I'm going to bed now. gn8
and the orange part was ment to be a volumeslider
http://home.arcor.de/theurmel/skin_raw.ski (http://home.arcor.de/theurmel/skin_raw.ski)
now you need to do some coding URMEL
i trust you are able to do the sprites, rects or srcoff parts yourself
if anyone else feels inspired, then design some graphics & come along for the ride
we're willing to assist as many skin-makers as there are available
---
as for PNG transparency, wait another day for the final word on it
we are in the last stages of supporting 100% complete png transparency (including 255 degrees of desktop transparency)
once we have done this - we should be able to port freeform winamp3 skins
(if that's what you've been hoping for)
I know why you are seeing the "compounding" alpha blend. Its because there is no fill (and filling with 0 0 0 0 doesn't work) and since I use a minimally redrawn back buffer the image just layers on top of itself. The image needs to "erase" the invalid portions by filling the backbuffer with a transparent value but as I said, doesn't work. I'll keep looking in to it.
Also, looking at the skin.jpg graphic - is there a way in photoshop or whatever to save the image with the alpha values around the edge intact rather then having it antialiased to the transparent background color? ie. so that the edges would instead blend with the desktop instead getting the blackish jaggies as in the current version.
Also, looking at the skin.jpg graphic - is there a way in photoshop or whatever to save the image with the alpha values around the edge intact rather then having it antialiased to the transparent background color? ie. so that the edges would instead blend with the desktop instead getting the blackish jaggies as in the current version.
of course
when you draw the skin , draw it on a new transparent layer
then it anti-aliases to alpha
in fact - here is URMEL's skin blended to alpha:
http://home.arcor.de/theurmel/skin_raw.png (http://home.arcor.de/theurmel/skin_raw.png)
however, if you are working with jagged source graphics, there are processes to fix those jaggies:
http://phong.com/tutorials/anti-alias/ (http://phong.com/tutorials/anti-alias/)
(http://www.btinternet.com/~sean.m.kelly/alpha_ss2.png)
danZ got it working
WOW WOW WOW
no more excuses - we want your skins!!!
if you are stuck on ideas then ask permission to port some winamp3/5 skins
[span style='font-size:8pt;line-height:100%']
(btw, the little chink in the alpha of the 45degree angled part is my fault)[/span]
OMG guys you rock! Yes we want WinAmp3 skin ports! Minima skin for instance or the Modern skin. Yes we wantss it.
If you want to try out the new alphablending support grab v2.1 Beta 1 (http://www.loodi.com/foo_looks_beta.zip).
Also, special thanks to kode54 for helping me figure out what I was doing wrong with the layered window API by sending a code snippet from foo_osd.
that's amazing!
i can't think of anything else missing than color groups ala winamp ... and state saving stuff
this has been discussed before
unfortunately we are not able to support win98
sorry
It would be handy if this fact was noted somewhere on the foo_looks pages, especially given the existence of "non winXP" instructions.
Oh wait,
nevermind. (http://www.hydrogenaudio.org/forums/index.php?showtopic=14853&hl=)
Apparently it is a non issue. (am I really the only win98 user? maybe there are some download stats from before the builds were unified)
stripe/ben
ok, i have some more Photoshop tutorials for you up & coming skin designers.
if you like this style of skin design (one i just whipped up):
(http://www.btinternet.com/~sean.m.kelly/tk_handorb_ss.jpg)
then check out these tutorials:
http://robouk.mchost.com/tuts/tutorial.php?tutorial=lcdorbs (http://robouk.mchost.com/tuts/tutorial.php?tutorial=lcdorbs)
http://robouk.mchost.com/tuts/tutorial.php...ial=smoothmetal (http://robouk.mchost.com/tuts/tutorial.php?tutorial=smoothmetal)
in fact, there are quite a few nice ones on the site:
http://robouk.mchost.com/tuts/ps.php (http://robouk.mchost.com/tuts/ps.php)
all credit goes to Robouk
(am I really the only win98 user? maybe there are some download stats from before the builds were unified)
Nope, you arn't the only Win9x user. I still use Win98SE, mostly because, unlike 2K and XP, it supports my hardware. Plus, I just so happen to like DOS games. Don't want to have to fiddle around just to get them to partialy work.
I know what you're going through. Every time I see a post about foo_looks, I know it's just teasing me. *Sigh* Maybe one day...
very nice to see transparency with desktop coming into play.. however cleartype font seems to get messed up if placed on a transparent background. not seeing a problem with the others.
ClearType rendering doesn't really lend well to RGBA anyway. Triple the effective horizontal resolution from spreading information across the three color channels, but still only one alpha channel.
You could try rendering the text yourself with standard anti-aliasing to a separate buffer, only using 3x the width. Then, you can check out a nice piece of code called Clearize which reduces images to 1/3 of their width with an effect similar to ClearType. That still leaves the alpha channel... perhaps average the 3 alpha levels into one, or maybe a wider filter?
For now, it's probably best to only use ClearType on solid backgrounds...
w00t
basic scriptingstuff done.
I've just got to think about the design of the tags etc.
Now it's going towards the creepy stuff
http://home.arcor.de/theurmel/skin_raw.png (http://home.arcor.de/theurmel/skin_raw.png)
http://home.arcor.de/theurmel/skin_raw.ski (http://home.arcor.de/theurmel/skin_raw.ski)
checking your code now..
EDIT:
nice to see you using my playback script
it's not strictly good coding practice, but it makes the thing a lot easier to read & understand
ok, here are my tips
[span style='font-size:14pt;line-height:100%']1.[/span] you need to add 1 additional line to
section backgroundlist rendermap int { render.Erase render.image }
this 5th new rendermap option allows foo_looks to blend to the desktop (and removes the jagged edges)
i'll write a tutorial on it soon
[span style='font-size:14pt;line-height:100%']2.[/span] as for the
pixel accuracy that danZ mentioned below, just add
bool pixelaccurate true
to
section globals for now
we will discuss it more soon.
[span style='font-size:8pt;line-height:100%']if you want to see the effect it has, try clicking the left half of the cfg button before adding pixel accuracy. and then try clicking it again after.
before using pixel accuracy, the corners of play button rect overlaps with thecfg button. using pixel accuracy stops this.[/span]
[span style='font-size:14pt;line-height:100%']3.[/span] one last thing, the play button sprite is not big enough, and 2 pixels are being cropped at the bottom
change the rect to:
sprite button_play
list rect int { 35 20 70 71 }
good work btw
w00t
basic scriptingstuff done.
I've just got to think about the design of the tags etc.
Now it's going towards the creepy stuff
http://home.arcor.de/theurmel/skin_raw.png (http://home.arcor.de/theurmel/skin_raw.png)
http://home.arcor.de/theurmel/skin_raw.ski (http://home.arcor.de/theurmel/skin_raw.ski)
Great start - I still think the bottom of the curve is more jaggy then it needs to be - maybe the alpha information there is still not quite right?
EDIT see tk32 post above... /EDIT
(http://www.loodi.com/jag.png)
Also, you definitely want to try out some pixelaccurate settings for you hotspots.
Another tip:
If you have sprites that display static text it is better to not use string fspec since that text will be processed by the tag routines even though the text is static. Its more efficient to use
string text "foobar"
sprite text_title_head
list rect int { 115 30 40 20 }
int fontsize 7
string text "title:"
sorry danZ
i kept editing my last post as i found more problems.
editing posts is a bad habit of mine
URMEL: now pick something on your skin that you would like us to help code first
thx guys
fixed most of the problems I noticed. The cropped playbutton gave me a lot of (useless work). I moved some buttons around, recreated the image the 1000th time etc. without checking the scriptcode
The playback script is a (most likeley everlasting) hack to get the skin usable, I played around with the functions themselfes as described in your guide, but that produced a long list of functions, and I wanted to know how to do this thing:
if fb2k_isPlaying() then fb2k_playPause() else fb2k_playStart() end
So I looked at your new_project.ski and copied the whole script because it looked much more elegant than my solution
Also it's a technique I also used for some eMule-Modifications. Advanced Copy&Pasting. Take other code, understand what it is doing and use it for your own purposes.
thx guys
fixed most of the problems I noticed. The cropped playbutton gave me a lot of (useless work). I moved some buttons around, recreated the image the 1000th time etc. without checking the scriptcode
The playback script is a (most likeley everlasting) hack to get the skin usable, I played around with the functions themselfes as described in your guide, but that produced a long list of functions, and I wanted to know how to do this thing:
if fb2k_isPlaying() then fb2k_playPause() else fb2k_playStart() end
So I looked at your new_project.ski and copied the whole script because it looked much more elegant than my solution
Also it's a technique I also used for some eMule-Modifications. Advanced Copy&Pasting. Take other code, understand what it is doing and use it for your own purposes.
Here's a tip that could have saved you some time
in section globals add
list bordercolor int { 200 255 0 0 }
int borderwidth 1
as long as you have not altered the rendermap to omit the border drawing you'll get something like this
(http://www.loodi.com/border.png)
This can be very helpful in find layering problems and position problems.
Note: Read before doing something.
I just redesigned the whole source to make pressed buttons possible. but now, I've got it *g*
[edit]
seems like there's a little mistake with the previous/rewind button. you'll notice it if you press it.
[edit2]
The things I gonna need help with:
1. The Seekbar
2. The Volumebar
...
10. A dB-Visualisation. in the right part of the main-windows (just below the _ x)
The things I gonna need help with:
1. The Seekbar
This will be easy since I have a basic seek bar already scripted for the default look.
Just import my shared scripts
import foo_looks_common.ski
Then attach the slider and seekSliderImpl scripts to your drag grip sprite.
Here's how it is done in the default look
sprite seekgrip
list scripts string { "slider[minx=5 maxx=102 trackx=true]","seekSliderImpl" }
slider takes care of making the grip draggable in a constrained range
minx defines where the seek graphic starts
maxx defines the end of the bar
trackx=true makes it a horizontal slide
seekSliderImpl takes care of making the generic slider script perform a seek.
If you want a fancier seek bar then take a look at some of the scripts tk32 has written. This will get you the basic functionality quickly though.
Your volume might need some custom scripting depending on how that control is supposed to work
For the visulization are you wanting to display the spectrum there?
ok
you should be fine with danZ implementation of the seekbar, although grabbing that small grip might be a problem.
don't worry for now, we'll address this problem later.
let us know if you have problems attaching it
it's best not to use my custom 'dragbar', since i havn't added the ability to attach a grip to it yet (something i will do when i have time)
meanwhile, i'll get to work on the custom 'curved' volume bar
i already have a plan in my head of how to code it, so i'll post some details here once i've made a little progress
-
can you upload the latest version of the graphics & ski again.
the png was only 1kb (incomplete) last time i tried to get it
experimenting with some alpha tricks
(http://www.btinternet.com/~sean.m.kelly/handorb_ss.jpg)
if anyone wants to see it in action:
hand_orb.png (http://www.btinternet.com/~sean.m.kelly/hand_orb.png)
hand_orb.ski (http://www.btinternet.com/~sean.m.kelly/hand_orb.ski)
the button doesn't do anything yet though
check out the png to see the layers [span style='font-size:8pt;line-height:100%'](the top right disc is not used currently)[/span]
p.s. it works well as a top-right desktop dock, because it doesn't obscure the window controls
i've been using the foo looks 2.0 default look for a week or two now and i really like it.. i'm just curious about a few things.. mainly, why don't the looks remember any settings when you deactivate/reactivate them and when you swap them? i'd like the look to remember which view to start in (compact) and to display time elasped as well as running time..
similarly, in tk32's micropanel the look reverts to the ID3 field when it goes from winshade mode back to regular view..
i think i'm going to try my hand at a skin soon, but i don't have any real experience coding.. just some irc scripting a few years ago.. is it fairly simple to write one of these?
thanks,
bogs
remembering settings is the next thing to tackle
danZ plans to have it working for version 2.1
as for coding a skin.. it's as simple or complicated as you want it to be
my advice is to follow my beginners tutorial
and then read the 2 mini how-to guides i have written.
here are the links:
- beginners tutorial (http://www.btinternet.com/%7esean.m.kelly/foo_looks/tutorial.htm)
- how-to guide #001 (http://www.btinternet.com/%7esean.m.kelly/how-to_guide_001.txt)
- how-to guide #002 (http://www.btinternet.com/%7esean.m.kelly/how-to_guide_002.txt)
danZ & myself are 'always' happy to answer questions or help with problems
is there a place where i can find skins for 2.0 main site isnt updated
the only skins available so far are mentioned in this topic
that's why we are trying to encourage more people to contribute
so far we only have 3 fully working skins
default
fooAMP
micropanel
but more on the way
i will update the foo_looks resource pages soon
so far we only have 3 fully working skins
default
fooAMP
micropanel
One more...
AeroAmp (http://loodi.com/aeroamp.zip) - a foo_kung look that allows Winamp 2.x skins to be used in Foobar2000.
really nice looking skin aero.. but it doesn't seem to work too well with foobar 0.8b6.. the seek bar and volume slider are locked in the far left positions.. the playback and volume are unaffected by clicking on them.. same with the balance slider... the playlist button doesn't bring up the playlist (i think that's addressed earlier in this thread though..) also the toggles on the time display screen are invisible until they're selected, so it takes a few misclicks to get it just right.. i don't know if that's because there's no highlight-on-rollover implented in the skin or if there is and it's just not working..
when you say this skin allows the porting of wa2 skins, you mean i can use other skins besides the one you've included? how would i go about doing that?
tk32:
i read the robouk photoshop tutorial on creating an mp3 player interface and i've made a base similar to the one in the tutorial.. i'm going to try to make some buttons for it, but i don't think i'll be able to handle the coding.. would you be able to help me out on that front?
thanks
bogs
really nice looking skin aero.. but it doesn't seem to work too well with foobar 0.8b6.. the seek bar and volume slider are locked in the far left positions.. the playback and volume are unaffected by clicking on them.. same with the balance slider... the playlist button doesn't bring up the playlist (i think that's addressed earlier in this thread though..) also the toggles on the time display screen are invisible until they're selected, so it takes a few misclicks to get it just right.. i don't know if that's because there's no highlight-on-rollover implented in the skin or if there is and it's just not working..
I haven't tried foo_looks with Foobar 0.8beta, but I suspect that it is a foo_looks / 0.8 incompatability. Does it occur with other looks?
when you say this skin allows the porting of wa2 skins, you mean i can use other skins besides the one you've included? how would i go about doing that?
The skin that is in the AeroAmp.zip file is called Black Dawn, my favorite Winamp skin. The .ski file is optimized for Black Dawn, but since I designed the look to close emulate Winamp's skin handling (with some minor omissions*), it does a pretty good job displaying almost all skins.
The easiest way to test this out is to get a Winamp2 skin - this will typically be a .zip or .wsz file. .wsz is actually just a ZIP file, so rename the file to whatever.zip, then exact all of the images into a directory. Copy all of the .bmp files to <Foobar Dir>\Components\foo_looks\AeroAmp, then restart Foobar or reload the look. You should now see the new skin.
A better way to handle multiple skins is to create a new copy of AeroAmp.ski for each skin (Black Dawn.ski, Major Tom.ski, etc.). Then create separate directories for each of the skin's graphics, under the foo_looks dir. Finally, edit the .ski file and with search and replace, change all of the "AeroAmp/" instances to "SkinName/". This will allow you to use the foo_looks configuration window to switch between looks/skins.
* The emulation is pretty good, but there are a few missing pieces. The biggest is the lack of support for the skin's bitmapped fonts, so the time display can sometimes be hard to read. Also, the emulator doesn't read the font and color information from the skin, so sometimes you might need to tweak the .ski a little. But in general, most skins seems to work ok without modification.
tk32:
i read the robouk photoshop tutorial on creating an mp3 player interface and i've made a base similar to the one in the tutorial.. i'm going to try to make some buttons for it, but i don't think i'll be able to handle the coding.. would you be able to help me out on that front?
thanks
bogs
of course
but why not try and do the same as
URMEL did, and have a go at getting all the
sprites,
rects, and
srcoff values in place. that's the most simple part of the coding - and it can be useful to get acquainted.
if you read the
beginners guide you'll know what this means (it's just like map reading)
you should end up with a .ski file that looks a little like this:
section window
int width 270
int height 155
sprite background
list rect int { 0 0 window.width window.height }
sprite prev_button
list rect int { 30 78 65 34 }
list srcoff int { 0 124 }
sprite play_button
list rect int { 34 22 70 71 }
list srcoff int { 68 124 }
sprite next_button
list rect int { 30 2 65 34 }
list srcoff int { 230 124 }
sprite stop_button
list rect int { 78 45 27 26 }
list srcoff int { 203 123 }
hopefully, you should also be able to load the skin in foo_looks (although it won't do anything yet)
when you get to this stage - you can hand the job over to me
either post about it in here, or contact me by email
()
[span style='font-size:8pt;line-height:100%']also ICQ (486325)[/span]
To Danz
1. I tried your foo_looks 2.1beta1 with foobar 0.8b6.
Activate playlist and show console commands in look now work, but look command "Exit Foobar" (pressing button) crashed Foobar.
When I select this command from another location (tray or menu) all OK.
2. I modify AeroAmp look, you may download it from topic Upload.
Changed - add new button: minimyze, show preference. Add change volume with mouse wheel.
<deleted comment>
my webspace seems to be down right now. I'll try to upload it asap.
[edit]
Done.
To Danz
1. I tried your foo_looks 2.1beta1 with foobar 0.8b6.
Activate playlist and show console commands in look now work, but look command "Exit Foobar" (pressing button) crashed Foobar.
When I select this command from another location (tray or menu) all OK.
I only did a quick test with 0.8 to see if foo_looks loaded OK and it did. It appears there are some SDK changes that are affecting certain aspects of the looks. I've been pretty busy getting alphablending to work which I think is a better use of my time for now. When 0.8 is released I'll upgrade and correct any problems so feel free to post them here but don't expect any quick turnaround on fixing them.
hand_orb.png (http://www.btinternet.com/~sean.m.kelly/hand_orb.png)
hand_orb.ski (http://www.btinternet.com/~sean.m.kelly/hand_orb.ski)
I like this and I hope you choose to further develop it as we discussed.
[span style='font-size:14pt;line-height:100%']v2.1 Beta 2 (http://www.loodi.com/foo_looks_beta.zip)[/span]
With the new alphablending in place it is still possible to support a full window constant alpha blend value in addition to any per pixel alpha blending that occurs based on the source graphics.
This alpha value is still set with
section window
int alphablend [0..100]
To make this more useful I added lua support for it via
window_setAlpha(a) -- [0..100]
so that you can alpha the whole window as needed in any scripts you write.
I've included a modified version of tk32's "hand_orb" look that demonstrates this new feature.
I only did a quick test with 0.8 to see if foo_looks loaded OK and it did. It appears there are some SDK changes that are affecting certain aspects of the looks.
Could you please elaborate? I'm about to start playing with foo looks again, but if it can't be used with v.0.8 beta x-xx and the future RC x then I might wait and improve my graphics skills instead.
I understand your decision to wait for a final release, but the fact that previous versions have had maybe 30 betas and 10 RC's, we might be talking about quite some time before we see a final release. I suppose quite a few people use betas because if they didn't there wouldn't be any serious beta testing either.
IIRC this has happend before, foo_WSGUI/foo_looks waiting for a final release of foobar2000, but as a plugin for a player that is under (heavy) development itself, your decision doesn't really encourage people to develop all the looks tk32 and yourself seems to hope for. It's lagging one step behind and making it hard for itself to be recognised as a good and useful plugin.
I'm looking forward to start fiddling with my own look, but it's hard to learn when you don't know if the bug is because of something you did yourself, or because the plugin isn't compatible with the most recent version of foobar2000. That kind of thing tends to make me lose my motivation. I've also got the impression that not alot has changed in the SDK, and that most plugins compiled for v.0.7 would also work with v.0.8beta. If that is true and I isn't too much work I'm hoping for an update of foo_looks that doesn't have any serious issues (if there is any at the moment) with the betas.
But, don't get me wrong, I really appreciate all the work you have done and still do to make this plugin something special!
tk32: I really appreciate the links to those graphics tutorials, and also all the work you do to make it easier to get started. Thanks!
v2.1 Beta 2 with tk32's "hand_orb" is just amazing. I don't think I have seen such perfectly round edges ever before. Doesn't use "any" CPU when dragged around all over my screen either. Truly great work!
I only did a quick test with 0.8 to see if foo_looks loaded OK and it did. It appears there are some SDK changes that are affecting certain aspects of the looks.
Could you please elaborate? I'm about to start playing with foo looks again, but if it can't be used with v.0.8 beta x-xx and the future RC x then I might wait and improve my graphics skills instead.
I understand your decision to wait for a final release, but the fact that previous versions have had maybe 30 betas and 10 RC's, we might be talking about quite some time before we see a final release. I suppose quite a few people use betas because if they didn't there wouldn't be any serious beta testing either.
IIRC this has happend before, foo_WSGUI/foo_looks waiting for a final release of foobar2000, but as a plugin for a player that is under (heavy) development itself, your decision doesn't really encourage people to develop all the looks tk32 and yourself seems to hope for. It's lagging one step behind and making it hard for itself to be recognised as a good and useful plugin.
I'm looking forward to start fiddling with my own look, but it's hard to learn when you don't know if the bug is because of something you did yourself, or because the plugin isn't compatible with the most recent version of foobar2000. That kind of thing tends to make me lose my motivation. I've also got the impression that not alot has changed in the SDK, and that most plugins compiled for v.0.7 would also work with v.0.8beta. If that is true and I isn't too much work I'm hoping for an update of foo_looks that doesn't have any serious issues (if there is any at the moment) with the betas.
But, don't get me wrong, I really appreciate all the work you have done and still do to make this plugin something special!
tk32: I really appreciate the links to those graphics tutorials, and also all the work you do to make it easier to get started. Thanks!
As far as I can tell with just a quick look at 0.8 and from user posts the menu stuff in foo_looks is not working well with 0.8 and the changelog indicates that this area of the API changed a lot so this is not surprising. Otherwise everything you create with 0.7X and 2.1X will work fine once I upgrade to the 0.8 SDK.
The frustration you feel with look development is exactly the same for me as a developer trying to stay current with foobar2000. I mean, I just this week got 2.0 done and then all of the sudden I'm getting all these reports about how it doesn't work well with the latest beta of foobar.
I won't necessarily wait for the 0.8 release but let me get the new features done and stable before I tackle the SDK upgrade. Design your look, code it, and just defer on the menu stuff.
v2.1 Beta 2 with tk32's "hand_orb" is just amazing. I don't think I have seen such perfectly round edges ever before. Doesn't use "any" CPU when dragged around all over my screen either. Truly great work!
I was pleasantly surprised with the performance too since there are several layers of alphablended compositing going on with this thing. The lower level API I'm using now must definitely be optimized for the alpha calculations and also surprisingly, 32 bit per pixel blitters are actually faster then 16 or 24 bpp ones. Windows got something right for once (anyone familar with SetWindowRegion() will appreciate what I mean).
We have some more cool ideas for hand_orb so check back for updates.
I only did a quick test with 0.8 to see if foo_looks loaded OK and it did. It appears there are some SDK changes that are affecting certain aspects of the looks.
Could you please elaborate? I'm about to start playing with foo looks again, but if it can't be used with v.0.8 beta x-xx and the future RC x then I might wait and improve my graphics skills instead.
I'm looking forward to start fiddling with my own look, but it's hard to learn when you don't know if the bug is because of something you did yourself, or because the plugin isn't compatible with the most recent version of foobar2000. That kind of thing tends to make me lose my motivation. I've also got the impression that not alot has changed in the SDK, and that most plugins compiled for v.0.7 would also work with v.0.8beta. If that is true and I isn't too much work I'm hoping for an update of foo_looks that doesn't have any serious issues (if there is any at the moment) with the betas.
The only real problem is that menu entry strings changed a lot between 0.7 and 0.8, so anything where you assign a button in foo_looks to call a menu command like:
fb2k_menuCommand("Foobar2000/Hide main window")
in 0.8 the command is now
fb2k_menuCommand("Foobar2000/Activate or hide main window")
See back a few pages of discussion for some more changed entries.:
http://www.hydrogenaudio.org/show.php/showtopic/17279/st/225 (http://www.hydrogenaudio.org/show.php/showtopic/17279/st/225)
@danZ and zanson: Thanks for clarifying. I don't think the kind of problems you describe will affect my coding for quite some time. At least it seems easy enough to avoid it.
thanks for all the positive comments on 'hand orb'
i'll continue to develop it as a full skin - and try to think of some other innovative features for it too
i was also pleasantly surprised how little demand on cpu there is
danZ: it was a nice idea to edit the skin & show off the alphablend command, but it really makes high demands on my cpu when faded - so i removed it for now.
for the latest version of the '
hand orb' skin, use this link:
- hand_orb.png (http://www.btinternet.com/~sean.m.kelly/hand_orb.png)
- hand_orb.ski (http://www.btinternet.com/~sean.m.kelly/hand_orb.ski)
[span style='font-size:8pt;line-height:100%']note - no updates yet[/span]UpNorth:
thanks for the praise
don't be put off making a skin because of the regular SDK changes. the only thing we have had a problem with in 0.8 is accessing the menu commands (since they have been reshuffled for 0.8 - and customizable).
in all cases where this has affected the functionality of a skin, it can usually be rectified with a single line of code.
there is no way that a skin you design one month will become redundant the next.
and if something stopped working for you - we'd waste no time in letting you know what & why.. and how to fix it
looking forward to your contribution
b nice if somebody redid the coal skin, in my opinon thats the best toolbar like skin
ok
URMEL i finished the first attempt at your volume bar
the code is messy, but it works nicely.
[span style='font-size:8pt;line-height:100%']
(it's really late here in London.. so i'll clean up the code tomorrow)[/span]
features:- when the skin is loaded, it checks the current volume & updates the bar
- you can click anywhere in the area and drag up/down
- the range is from -40dB to 0dB
- the volume changes in realtime as you drag [span style='font-size:8pt;line-height:100%'](but obviously, as always with fb2k volume change, there is a short delay)[/span]
missing:- if you change the volume from somewhere else (keyboard / replaygain) then the skin doesn't update the graphics
[span style='font-size:8pt;line-height:100%'](i will add this to the code soon)[/span]
notes:- i had to edit the graphics file a little. i swapped the places of the two volume bar graphics.
here is the code required in the ski:
sprite slider_volume
int layer 1
list rect int { 21 26 20 0 }
list srcoff int { 170 195 }
sprite volume_box
string include slider_volume
int height 62
list rendermap int { }
list scripts string { "urmel_vol_drag[bar=slider_volume]" }
the first sprite is the graphics sprite. it get's bigger/smaller depending on what the current volume is.
the second sprite is the control sprite. it is invisible and always stays the same size. when you click inside it, it updates the size of the graphics in the other sprite, and then updates the volume of fb2k.
very similar to the way my dragbar works in the
micropanel skin, but modified for volume control (and to use custom graphics)
the script is called
urmel_vol_drag, but you can change the name if you like. i didn't paste it here because it's quite big
download the updated graphics & ski here and try it out:
skin_raw.png (http://www.btinternet.com/~sean.m.kelly/skin_raw.png)
skin_raw.ski (http://www.btinternet.com/~sean.m.kelly/skin_raw.ski)
enjoy.
[span style='font-size:8pt;line-height:100%']
p.s. - i spotted a few more improvements to make (statemap/tagz/rect) but i'm too tired now.. maybe tomorrow[/span]
I only did a quick test with 0.8 to see if foo_looks loaded OK and it did. It appears there are some SDK changes that are affecting certain aspects of the looks.
Could you please elaborate? I'm about to start playing with foo looks again, but if it can't be used with v.0.8 beta x-xx and the future RC x then I might wait and improve my graphics skills instead.
I'm looking forward to start fiddling with my own look, but it's hard to learn when you don't know if the bug is because of something you did yourself, or because the plugin isn't compatible with the most recent version of foobar2000. That kind of thing tends to make me lose my motivation. I've also got the impression that not alot has changed in the SDK, and that most plugins compiled for v.0.7 would also work with v.0.8beta. If that is true and I isn't too much work I'm hoping for an update of foo_looks that doesn't have any serious issues (if there is any at the moment) with the betas.
The only real problem is that menu entry strings changed a lot between 0.7 and 0.8, so anything where you assign a button in foo_looks to call a menu command like:
fb2k_menuCommand("Foobar2000/Hide main window")
in 0.8 the command is now
fb2k_menuCommand("Foobar2000/Activate or hide main window")
See back a few pages of discussion for some more changed entries.:
http://www.hydrogenaudio.org/show.php/showtopic/17279/st/225 (http://www.hydrogenaudio.org/show.php/showtopic/17279/st/225)
The API was extended in 0.8 beta 5 so that menu actions can also have GUIDs, and thus can be invoked by GUID. All of the core menu actions now have GUIDs, declared in guid.h.
... Of course, this now means that for any components to take advantage of this feature, they have to be extended to support it. Gee, how would this system be supported in a script? Hardcoded GUIDs, or functions which support GUID parameters and an includes file with the standard GUID set? Or is it even worth implementing?
Thanx alot for thats great work poeple.
So when we will have final release? and when the homepage will be updated ?
And hey we need more skins
So when we will have final release?
we've already reached a very stable build.
i'm sure you're aware how fb2k keeps improving. so do we.
there will never be a '
final' release
and when the homepage will be updated ?
my fault (since i'm the webmaster)
i've just updated it (http://www.btinternet.com/~sean.m.kelly/foo_looks/) with essentials now - and added a simple gallery (http://www.btinternet.com/~sean.m.kelly/foo_looks/gallery.htm) section.
i will make a much bigger update soon though.
And hey we need more skins
thanks for offering
we were hoping people like you might like to try & contribute
although, no doubt, we'll continue to make skins ourselves
The API was extended in 0.8 beta 5 so that menu actions can also have GUIDs, and thus can be invoked by GUID. All of the core menu actions now have GUIDs, declared in guid.h.
kode54 thanks for the information that sounds like it could eliminate the problems we are seeing now for at least the core menu items.
... Of course, this now means that for any components to take advantage of this feature, they have to be extended to support it. Gee, how would this system be supported in a script? Hardcoded GUIDs, or functions which support GUID parameters and an includes file with the standard GUID set? Or is it even worth implementing?
To implement in scripting I think I'll do something like making a built in global table that is available to all scripts that would map the GUID to a user friendly value.
ie.
core_menus = { foobar2000=GUIDforfoobar2000, etc }
then in scripts you could do
fb2k_mainMenu(core_menus.foobar2000)
I'll have to see if there is a way to deal with GUID in lua since it is such a huge value. Probably user data or something will work.
This is a good example of why sometimes it pays to wait on upgrading to the beta SDKs
What I'm working on:
)
What I'd like to know:
1) Is it possible to somehow get the look work like this: normally it would show only the orb part with now playing info etc, but when a button is clicked, the playlist part would somehow "slide" out? And of course a new click would make it slide back again?
2) When I've finished the graphics I can probably wrap it to be a really basic look (perhaps even the playlist functionality is too much for me, don't know as the last time I worked on looks was like.... Well... A LONG time ago and then there was only some basic functions avaliable). So I'd like to get some help then (not yet, as I don't know what I want it to be able to do) with all the scripting stuff etc.
3) tk32: hope you don't mind that I stole the visualization from the last look you posted. Or actually just the idea and the graphic, haven't had time to do anything else than the graphics for the look.
4) What do you think? Should I even bother finishing it?
1) Is it possible to somehow get the look work like this: normally it would show only the orb part with now playing info etc, but when a button is clicked, the playlist part would somehow "slide" out? And of course a new click would make it slide back again?
perfectly possible
but a little complicated... we can help with that
3) tk32: hope you don't mind that I stole the visualization from the last look you posted. Or actually just the idea and the graphic, haven't had time to do anything else than the graphics for the look.
you're welcome - although even mine was just a rushed job - i'll probably make it more beautiful when i get a chance
btw, excellent design
thanks for reminding us that we are not restricted to the same old designs all the time.
What I'm working on:
I have a question, how are the track ratings done stored - meta data, another third party component, ??? While what you show graphically with the stars is easily doable I'm just wondering where the actual data comes from to decide how many stars to render.
What I'm working on:
I have a question, how are the track ratings done stored - meta data, another third party component, ??? While what you show graphically with the stars is easily doable I'm just wondering where the actual data comes from to decide how many stars to render.
i think it's a custom id3 tag
RATING=1..5
but we'll wait for anza's reply to know for certain
might be cool to think of a way of being able to set the rating from the look
Yes it's just a custom tag just as tk32 said. I'm actually breaking standards and use a scale of 1 to 6
Gah LUA is shite. In LUA, 0 is true, so I can't even do something simple like:
look_setToggle(this, not look_getToggle(this))
Maybe you could change the return types of setToggle and getToggle to booleans, danZ?
Yes it's just a custom tag just as tk32 said. I'm actually breaking standards and use a scale of 1 to 6
we could break it even more .. and support decimals
RATING=4.5
the skin would paint 4 & a half stars
Yes it's just a custom tag just as tk32 said. I'm actually breaking standards and use a scale of 1 to 6
OK, you'll need a simple, custom script to handle the drawing of the stars but I think there are adequate script functions to pull if off (and it can be code to work with a max rating or 5 or 6 )
For the sliding drawer concept my horizontalTray script in the default look should be able to do that with little or no modification. When you are ready to code up this look let us know and we'll help you out. First step will be to get all the graphics designed in a way to make the advanced features you want possible.
Gah LUA is shite. In LUA, 0 is true, so I can't even do something simple like:
look_setToggle(this, not look_getToggle(this))
Maybe you could change the return types of setToggle and getToggle to booleans, danZ?
stop complaining and work around it
if look_getToggle(this) == 1 then
look_setToggle(this, 0)
else
look_setToggle(this, 1)
end
EDIT:
sorry danZ - looks like we made a duplicate response again
Gah LUA is shite. In LUA, 0 is true, so I can't even do something simple like:
look_setToggle(this, not look_getToggle(this))
Maybe you could change the return types of setToggle and getToggle to booleans, danZ?
I think this is a problem with look_setToggle() which is expecting 1 true or 0 false but in lua false == nil. So, look_getToggle() is returning ether 1 or nil but the functions taking a bool paramter aren't supporting both cases for false. Blame me, not lua
EDIT
Actually get toggle is also returning 0 or 1 -- its the 'not' that ends up changing the value to nil
/EDIT
so this works
if (look_getToggle(this) == 0) then
look_setToggle(this, 1)
else
look_setToggle(this, 0)
end
but not what you posted. I can change my functions to respect nil for false ...
At the time of writing my previous entry, I was in fact doing
function onleftbuttonup(this)
if look_getToggle(this) == 1 then
look_setToggle(this, 0)
else
look_setToggle(this, 1)
end
end
it would break all our current skins to change the return type of the current functions
Is it just me or is what you said a little ironic, considering that foo_looks v2 has broken numerous v1 skins beyond repair already? Why don't we make sure we get the API right from the start, this time around?
Why don't we make sure we get the API right from the start, this time around?
the shorthand version you posted should be supported so I'll make sure it works - thanks for pointing out the bug as there are probably other boolean related problems because of this false == nil business.
Just a few more questions:
So, if I want to get the visualization alpha blended like in tk32's hand_orb do I have to do it like tk32 has done? With a new layer that goes on top of the visualization and has an alpha blended border?
Also about the stars. Is it enough if I put just one star to the .png? I mean, can I (we) use it for both, the opaque and the semi-transparent stars? I believe it's possible, but I'm just checking
More questions will follow
Thanks for the quick response and good work, danZ - Looking forward to it.
Just a few more questions:
So, if I want to get the visualization alpha blended like in tk32's hand_orb do I have to do it like tk32 has done? With a new layer that goes on top of the visualization and has an alpha blended border?
Also about the stars. Is it enough if I put just one star to the .png? I mean, can I (we) use it for both, the opaque and the semi-transparent stars? I believe it's possible, but I'm just checking
More questions will follow
the spectrum bar graphic can have its own alpha values to blend it with the background but to contrain it to the oval you'll need some type of overlay mask - tk32 can eloborate.
for the stars the easiest way to do it would be to render a graphic with all 6 stars "on" and have the background contain all 6 stars "off".
The look would then use one sprite for the "on" stars at a higher layer and would use the rating to determine the width of the sprite thus clipping it to render ony X on stars.
Thanks for the quick response and good work, danZ - Looking forward to it.
Hum, backup...
There are issues I forgot.
look_setToggle() isn't a boolean function... the toggle value is an int not not a bool so that you could support (via scripting) a tri or other multistate toggle.
That's why I return a number for look_getToggle() and your 'not' was not working.
I still can alter the function though to support nil which would set the toggle back to 0...
I'll check other boolean functions though to be sure there isn't a problem.
Just a few more questions:
So, if I want to get the visualization alpha blended like in tk32's hand_orb do I have to do it like tk32 has done? With a new layer that goes on top of the visualization and has an alpha blended border?
Also about the stars. Is it enough if I put just one star to the .png? I mean, can I (we) use it for both, the opaque and the semi-transparent stars? I believe it's possible, but I'm just checking
More questions will follow
the spectrum bar graphic can have its own alpha values to blend it with the background but to contrain it to the oval you'll need some type of overlay mask - tk32 can eloborate.
So then I'll just have to wait for tk32 to reply
for the stars the easiest way to do it would be to render a graphic with all 6 stars "on" and have the background contain all 6 stars "off".
The look would then use one sprite for the "on" stars at a higher layer and would use the rating to determine the width of the sprite thus clipping it to render ony X on stars.
That's quite much how I was thinking of doing it when I started designing the look, but some people who use a scale of 1-5 might not like it
Oh well, I'll just do what you suggested.
hi anza
the only way to get a faded edge on spectrum & text fields is to use a graphical mask
it's even essential when it comes to textscroll (although i am thinking about how to code i universal textscroll that doesn't require a mask)
if you don't feel confident creating the mask graphic, i can help out
as for the stars, you'll only need to draw (in photoshop) 1 on, and 1 off
code can do the rest
That's quite much how I was thinking of doing it when I started designing the look, but some people who use a scale of 1-5 might not like it
Oh well, I'll just do what you suggested.
The script can be written to support a scale of 5 or 6 so it can work for either case. If someone wants a scale of 5 then they just do as I instructed you but with a graphic containing 5 stars. The script will decide if the scale in broken into 5ths, 6ths, 20ths, or whatever.
I was trying to toggle the foobar2000 window, using some code from the official look:
lua togglefb2k
function onleftbuttonup(this)
if fb2k_uiIsActivated() then
fb2k_menuCommand("Foobar2000/Hide main window")
look_setToggle(this, 0)
else
fb2k_menuCommand("Foobar2000/Activate main window")
look_setToggle(this, 1)
end
end
endlua
However, the function doesn't seem to be able to activate the window after it has been hidden. I don't know if this problem lies in fb2k_uiIsActivated() or fb2k_menuCommand. Maybe something is wrong in the above code?
I was wondering how foo_looks gets the menu commands as well, as it doesn't seem to be able to use all of them - For example, there is a menu command called "Foobar2000/Activate or hide", which could make this job easier, but foo_looks doesn't seem to be able to use it.
hi anza
the only way to get a faded edge on spectrum & text fields is to use a graphical mask
it's even essential when it comes to textscroll (although i am thinking about how to code i universal textscroll that doesn't require a mask)
if you don't feel confident creating the mask graphic, i can help out
as for the stars, you'll only need to draw (in photoshop) 1 on, and 1 off
code can do the rest
What would be the fastest way of doing a good mask? Would just a plain "copy the orb and use feather tool to get rid of the center" work well or is there some secret way of doing über cool fades?
Also, I think it would be enough to just draw one star, as the "off" one is just the same, but only with 20% opacity while the "on" one is fully opaque.
b nice if somebody redid the coal skin, in my opinon thats the best toolbar like skin
If you talk about this one:
(http://www.barciaonline.com/aural/foobarlooks/images/coal.png)
I'm the maker of it. I don't have much time to learn how to make .ski for new foo_looks, but as I don't seem to find any look that satisfies me so I'll try to do it. I can't promise anything though, if anybody is interested in doing it don't hesitate.
What would be the fastest way of doing a good mask? Would just a plain "copy the orb and use feather tool to get rid of the center" work well or is there some secret way of doing über cool fades?
there are many ways of achieving the same effect
firstly though,
- create a new layer and paste a composite copy of the entire skin (or part of the skin) - to do this, make a selection and choose '
edit >
copy merged'
- move the new copy of the compositie graphic to somewhere else on the page
- delete the unnecessary parts
- for the parts you want to fade out, use any of the following techniques:
1. make a quick mask over the selected part of the skin, then use any of the tools to gently paint in a fade [span style='font-size:8pt;line-height:100%'](i used a radial gradient on the quick mask to achieve the fade in the hand orb skin)[/span]
2. use a series of different opacity soft erasers to erase parts by hand, bit by bit
3. make feathered selections and delete
tk32, ok thanks for the "tutorial" I'll try it later.
I just can't figure out what kind of buttons would be good for the look.. Perhaps something like this?
b nice if somebody redid the coal skin, in my opinon thats the best toolbar like skin
If you talk about this one:
@anza: Nice work!
It's strange, but your look has kind of the same design as the look I'm working on. It's not the same shape or color, but the bordered design with rounded edges with exactly the same thickness. I'm also planing a slide out playlist. Maybe this is what they call scandinavian design?
@Anyone:
I can't figure out how to concatenate strings. I'm trying to use the guessing code from my "dynamic" playlist formatting, and that works like it should, but how do I concatenate the guessed artist and title info into one single fspec for display?
Here is an example, but I have tried quite a few things:
"string fspec "%guess_artist.artist% - %guess_title.title%"
Hopefully you get the idea. "guess_artist" and "guess_title" are sections and "artist" and "title" are strings (obvious I guess).
tk32, ok thanks for the "tutorial" I'll try it later.
I just can't figure out what kind of buttons would be good for the look.. Perhaps something like this?
why not make them show in the bottom-right of the orb, on top of the visualization, in a similar sloping way
and only visible when the mouse is inside the skin
@Anyone:
I can't figure out how to concatenate strings. I'm trying to use the guessing code from my "dynamic" playlist formatting, and that works like it should, but how do I concatenate the guessed artist and title info into one single fspec for display?
Here is an example, but I have tried quite a few things:
"string fspec "%guess_artist.artist% - %guess_title.title%"
Hopefully you get the idea. "guess_artist" and "guess_title" are sections and "artist" and "title" are strings (obvious I guess).
string fspec "%guess_artist._artist% - %guess_title._title%"
that should do it
@tk32: Thanks alot!
The combination of foo_looks syntax, LUA and Tagz can be confusing at times.
Another (stupid) question:
sprite album
list fontcolor int { 170 0 0 0 }
list rect int { 12 82 207 11 }
int fontsize 7
string fspec $if(%tracknumber%,#$num(%tracknumber%,2) - )$upper(%album%) $if3('('%year%')','('%date%')')
After putting that to my .ski I get this error:
INFO (foo_looks) : Look file 'D:\Applications\foobar2000\components\foo_looks\orb.ski' modified - Reloading
ERROR (foo_looks) : Failed to load 'D:\Applications\foobar2000\components\foo_looks\orb.ski'
ERROR (foo_looks) : [Error] [Line: 47] Token = '#$num(%tracknumber%'
ERROR (foo_looks) : [Error] [Line: 48] Token = ')$upper(%album%)'
What's wrong?
edit:
changing the string to
string fspec #%tracknumber%-$upper(%album%)'('%date%')'makes it work but it's not what I want...
Another (stupid) question:
sprite album
list fontcolor int { 170 0 0 0 }
list rect int { 12 82 207 11 }
int fontsize 7
string fspec $if(%tracknumber%,#$num(%tracknumber%,2) - )$upper(%album%) $if3('('%year%')','('%date%')')
After putting that to my .ski I get this error:
INFO (foo_looks) : Look file 'D:\Applications\foobar2000\components\foo_looks\orb.ski' modified - Reloading
ERROR (foo_looks) : Failed to load 'D:\Applications\foobar2000\components\foo_looks\orb.ski'
ERROR (foo_looks) : [Error] [Line: 47] Token = '#$num(%tracknumber%'
ERROR (foo_looks) : [Error] [Line: 48] Token = ')$upper(%album%)'
What's wrong?
edit:
changing the string to
string fspec #%tracknumber%-$upper(%album%)'('%date%')'
makes it work but it's not what I want...
you need quotes around any strings
string fspec " put your tagz syntax here "
if it works sometimes with out the outer quotes then its just by luck (and bad programming in my tokenizer/parser).
This is what I got after quickly changing tk32's hand_orb.ski to my needs:
Damn I've dropped totally from the development of this plugin, can't even make a progressbar
Here's the look (mainly for danZ and tk32 or anyone who want's to help me):
orb.png (http://koti.mbnet.fi/antsau/foobar2000/orb.png)
orb.ski (http://koti.mbnet.fi/antsau/foobar2000/orb.ski)
the font for the title display (http://koti.mbnet.fi/antsau/foobar2000/HOOG0553.TTF)
It's got nothing special yet. Only the stuff you can see on the screenshot.
edit: gotta edit that mask a bit..
Looking good!
If you're skilled, you can get the code for the progress bar from one of tk32's looks. I will write up an explanation for it, once I finish the look I am working on. However, I am sure he is willing to help you and put you on the right track.
yeah sure
i'll write a guide to adding important features:
- progress bar
- text scroll
- volume bar
- rotational control
- playback switch (random/repeat)
anza - let me think about how to solve your vis problems
Thank you very much tk32!
I almost got the progress bar working (copied from tk32's new_skin_project). So it currently shows up if you have that skin also, as it needs new_project_common.ski. I also fixed the vis a bit, I made it a little lower and it looks better now. I also got a new idea, I'll try to make the wis even more lower and put the controls under it.
The current version can be downloaded from the same URL.
I'm making a volume bar by using the following code - Removed some stuff:
section presets
int minvolume -45
lua volumebar
min = look_getValue(presets, minvolume)
function updateBar(this)
...
end
function onvolumechange(this, newvol)
updateBar(this)
end
endlua
However, I get the following message, because look_getValue isn't returning anything:
ERROR (foo_looks) : attempt to perform arithmetic on global `min' (a nil value)
It works fine, when I enter a value instead of the look_getValue, so what am I doing wrong?
I'm making a volume bar by using the following code - Removed some stuff:
section presets
int minvolume -45
lua volumebar
min = look_getValue(presets, minvolume)
function updateBar(this)
...
end
function onvolumechange(this, newvol)
updateBar(this)
end
endlua
However, I get the following message, because look_getValue isn't returning anything:
ERROR (foo_looks) : attempt to perform arithmetic on global `min' (a nil value)
It works fine, when I enter a value instead of the look_getValue, so what am I doing wrong?
look_getValue("presets","minvolume")
I will release this look (http://www.hydrogenaudio.org/forums/index.php?act=ST&f=42&t=18467) once the last bugs are ironed out, and I add a little more functionality.
I'm stuck
How can I make this text disappear on mouseover, to reveal my playback buttons underneath?
section trackinfo
int layer 2
sprite artist
string include trackinfo
list rect int { 10 1 230 16 }
int fontsize 8
string fspec "%tagz._Artist-Title%"
I can't seem to find small, usable LUA scripts that doesn't bite their own tails and fork in every direction. I'm looking forward to take advantage of the complexity LUA offers, but right now it's really confusing. There are so many ways to do the same thing, and that makes it hard to take pieces from looks made by different people.
Hey all,
I'm new to making skins and well here is my first attemp after finishing the tutorial.
Fu Amp.ski (http://members.home.nl/robbertvanweelderen/skin/RobbertFuAmp.ski)
FuAmp.png (http://members.home.nl/robbertvanweelderen/skin/RobbertFuAmp.png)
I hope it works
Robbert van Weelderen
Ohh and I forgot to say it's not finished, and I am looking forward to more tutorials. (But I did find some mistakes in one of them.)
@UpNorth: I forgot to change it before uploading, everything should work now.
I'm stuck
How can I make this text disappear on mouseover, to reveal my playback buttons underneath?
section trackinfo
int layer 2
sprite artist
string include trackinfo
list rect int { 10 1 230 16 }
int fontsize 8
string fspec "%tagz._Artist-Title%"
I can't seem to find small, usable LUA scripts that doesn't bite their own tails and fork in every direction. I'm looking forward to take advantage of the complexity LUA offers, but right now it's really confusing. There are so many ways to do the same thing, and that makes it hard to take pieces from looks made by different people.
sprite artist
string include trackinfo
list rect int { 10 1 230 16 }
int fontsize 8
string fspec "%tagz._Artist-Title%"
list scripts string { "[function onmouseenter(this) look_setVisible(this, false) end]" }
Note: You might also need to add setEnabled(this, false), depending on which sprite (buttons or artist) you declared first. Also, I did not do any code for showing the artist again onmouseleave.
@DocUK: Thanks alot
@robbertvw: You have to rename your image file from "RobbertFuAmp.png" to "Robbert FuAmp.png" or change the ski-file.
I can't seem to find small, usable LUA scripts that doesn't bite their own tails and fork in every direction. I'm looking forward to take advantage of the complexity LUA offers, but right now it's really confusing. There are so many ways to do the same thing, and that makes it hard to take pieces from looks made by different people.
lua hideOnMouseOver
function onmouseenter(this)
look_setVisible(this,false)
end
function onmouseleave(this)
look_setVisible(this,true)
end
endlua
Attach that to any sprites needing this behavior.
Note: You might also need to add setEnabled(this, false), depending on which sprite (buttons or artist) you declared first. Also, I did not do any code for showing the artist again onmouseleave.
This is a good point, hiding the sprite with look_setVisible() does not disable it - that is it will still get mouse input and be clickable, etc. look_setEnabled() will prevent the mouse input. So use both functions as necessary depending on your needs.
Note: You might also need to add setEnabled(this, false), depending on which sprite (buttons or artist) you declared first. Also, I did not do any code for showing the artist again onmouseleave.
This is a good point, hiding the sprite with look_setVisible() does not disable it - that is it will still get mouse input and be clickable, etc. look_setEnabled() will prevent the mouse input. So use both functions as necessary depending on your needs.
Even worse, if you have an invisible (but enabled) sprite over other enabled and visible buttons that have hover states defined, the buttons underneath will respond to hovers and change image accordingly because you're entering the defined area of the look, but you can't press them because they're under the invisible sprite.
It took me forever to figure that out from scratch (as my buttons would respond perfectly to hovering, but not clicking).
Any ideas how I could get rid of that "bug" with the visualization?
There might not be any way to do this since the parts of the spectrum you want to hide spill over onto the area that needs to be transparent to the desktop. If there were parts of the look rendered under the areas of spill over it would be easy to make a mask to do that.
Let me think about this - unless tk32 has some magic graphics tricks up his sleeve.
ok guys
wait 2 more hours, then i'll get to work on the guides
this topic is more busy than ever today
slow down a little perhaps
Rome wasn't built in a day
Note: You might also need to add setEnabled(this, false), depending on which sprite (buttons or artist) you declared first. Also, I did not do any code for showing the artist again onmouseleave.
This is a good point, hiding the sprite with look_setVisible() does not disable it - that is it will still get mouse input and be clickable, etc. look_setEnabled() will prevent the mouse input. So use both functions as necessary depending on your needs.
Even worse, if you have an invisible (but enabled) sprite over other enabled and visible buttons that have hover states defined, the buttons underneath will respond to hovers and change image accordingly because you're entering the defined area of the look, but you can't press them because they're under the invisible sprite.
It took me forever to figure that out from scratch (as my buttons would respond perfectly to hovering, but not clicking).
Correct again, all sprites get mouseenter/mouseleave events but only the topmost sprite will get the mouse click events. I did it this way to keep it easy to make buttons without scripts.
If I didn't do it this way you'd have something like Shockwave were every sprite gets the click event and then they all have to have a script that determines if they should handle the mouse click, figure out which graphic to display, etc.
Since buttons are a common, necessary exercise I tried to make them as easy as possible to setup and that is why the script events are the way the are and there is the built in statemap stuff for the various button graphics.
danZ:Some issues that I need clarification/help with:
- look_getValue(presets, minvolume)
- fb2k_menuCommand("Foobar2000/Activate main window")
- look_setToggle(this, not look_getToggle(this))
- %_playlist_number%
look_getValue(presets, minvolume)I posted about this in this thread a bit earlier. I can't seem to get this function to return anything.
fb2k_menuCommand("Foobar2000/Activate main window")This command doesn't work at all. Not in the official look, and not in mine either. This might be a problem with the fact that I'm running a beta of foobar2000 v0.8?
Dedicated functions to showing and hiding the window would be nice, considering fb2k_menuCommand("Foobar2000/Activate main window") doesn't work at all.
Ideally, we should also have an onfb2kstatuschange() or something to be notified when the foobar2000 window is restored from system tray or taskbar again, so we can keep track of the toggles and so on.
look_setToggle(this, not look_getToggle(this))We already talked about this - Doesn't work because of return values of the functions, and LUA's variable 'types'.
%_playlist_number%I can't get this to return anything but 0. It works in the official look, but it does not work in my formatting string:
string fspec "%_playlist_number%. [%artist% - ]$if(%title%,%title% ['['%album%[ #[%disc%/]$num(%tracknumber%,2)]']'],%_filename_ext%) ['('$upper($ext(%_filename_ext%))@%__bitrate%kbps')']"
I'm slowly beginning to understand foo_looks again
This is what my orb does right now. I need two more things and it's perfect (for me): solution for the vis problem and the text scroller After that you others might also want the buttons and the playlist ability. But now I'm off for some sleep... It's 01:25 here (so I'll get to sleep ~6hrs) and I'm extremely tired
Some issues that I need clarification/help with:
[/li][li]look_getValue(presets, minvolume)
You missed my previous reply
look_getValue("presets", "minvolume")
You have to quote the values you are looking up otherwise lua thinks they are variable names.
[/li][li]fb2k_menuCommand("Foobar2000/Activate main window")
Not working well with 0.8 and has been well hashed out earlier in this thread. I'll look at it when I move to 0.8 SDK.
[/li][li]look_setToggle(this, not look_getToggle(this))
I think this is correct in looking back at it because set/get toggle is dealing with an integer not a boolean. toggles to don't have to be on/off they could be tri or more stated such as look_setToggle(this,3).
So, you need to use the long hand lua posted earlier.
lua simpleToggle
-- User properties
toggle = 0
function onattach(this)
look_setToggle(this, toggle)
end
function onleftbuttonup(this)
if (look_getToggle(this) == 0) then
look_setToggle(this, 1)
else
look_setToggle(this, 0)
end
end
endlua
you can just attach
simpleToggle if that is all you need.
[/li][li]%_playlist_number%
Every sprite can be associated with a specifc playlist index. By default it is -1 which means the "now playing" song meta data. Since the playlist numbers are 0 based I add one in my custom tag parser - thus you are getting 0.
You can set the playlist index in the ski file with
sprite foo
int playlistindex N
in LUA
look_setPlaylistIndex(sprite,index)
This will format the text against the meta data for that specific index.
Note that once you set the playlistindex that is relative to the active playlist so will change the displayed text as you change playlists (tabs in the main ui).[/li][/list]
Also, foo_looks crashes if you forget to put the file extension while defining the image that should be used..
Weird, I fixed it though
You missed my previous reply
look_getValue("presets", "minvolume")
You have to quote the values you are looking up otherwise lua thinks they are variable names.
Sorry about that. I didn't see it at all.
Not working well with 0.8 and has been well hashed out earlier in this thread.
Didn't see that either.
Every sprite can be associated with a specifc playlist index. By default it is -1 which means the "now playing" song meta data. Since the playlist numbers are 0 based I add one in my custom tag parser - thus you are getting 0.
You can set the playlist index in the ski file with
sprite foo
int playlistindex N
in LUA
look_setPlaylistIndex(sprite,index)
This will format the text against the meta data for that specific index.
Note that once you set the playlistindex that is relative to the active playlist so will change the displayed text as you change playlists (tabs in the main ui).
I don't understand this
at all. I don't think you understand what I'm trying to do. I just want to retrieve the number the playing song is in the playlist, so I can show it on my skin.
I don't understand this at all. I don't think you understand what I'm trying to do. I just want to retrieve the number the playing song is in the playlist, so I can show it on my skin.
I do understand and what I'm trying to convey is that every sprite fomats its text against either the now playing item or a specific playlist index.
By default the playlist index is -1 which means to fomat against the now playing song. The now playing song is not associated with any playlist index and thus returns 0 for %_playlist_number%. This is a result of how the foobar2000 api works not a design choice.
tk32 ran into this same issue and can provide some pointers on how to get the result you are looking for by using a script to keep the playlist index in sync with the now playing item.
Bah. It used to work in foo_looks 1. I guess I'll remove it altogether, unless tk32's solution is quite simple.
@anza: I like this skin. But the font for Title is so big it could only fit a few characters. Why not split it into two lines with a smaller font? I have classical pieces here whose titles are huge. And how do you set the stars?
Hey all,
I'm new to making skins and well here is my first attemp after finishing the tutorial.
Fu Amp.ski (http://members.home.nl/robbertvanweelderen/skin/RobbertFuAmp.ski)
FuAmp.png (http://members.home.nl/robbertvanweelderen/skin/RobbertFuAmp.png)
I hope it works
Robbert van Weelderen
Ohh and I forgot to say it's not finished, and I am looking forward to more tutorials. (But I did find some mistakes in one of them.)
@UpNorth: I forgot to change it before uploading, everything should work now.
great work robert
i am trying the skin now
sorry if there were a couple of mistakes in the tutorial - i think i know which one it is (section color
s)
i'll be writing more tutuorials VERY SOON.
starting with the topic of adding a really nice & functional progress bar
keep up the good work
Note: You might also need to add setEnabled(this, false), depending on which sprite (buttons or artist) you declared first. Also, I did not do any code for showing the artist again onmouseleave.
This is a good point, hiding the sprite with look_setVisible() does not disable it - that is it will still get mouse input and be clickable, etc. look_setEnabled() will prevent the mouse input. So use both functions as necessary depending on your needs.
i solved this by making 2 global functions for micropanel;
enable() &
disable()it combines visible & enabled into 1 function, and also works with groups of sprites
section globals
string script "
function enable(group)
look_setVisible(group,true)
look_setEnabled(group,true)
end
function disable(group)
look_setVisible(group,false)
look_setEnabled(group,false)
end
"
now you can do something like this:
lua hideOnRollover
function onmouseenter(this) disable(this) end
function onmouseleave(this) enable(this) end
endlua
or even something like this
lua buttonsOnRollover
buttongroup = { prev, play, stop, next }
function onmouseenter(this) enable(buttongroup) end
function onmouseleave(this) disable(buttongroup) end
endlua
hope this helps
[span style='font-size:8pt;line-height:100%']
p.s. there are a few more little gems like this waiting to be found in micropanel_common.ski. might be worth checking out[/span]
anza - after having a quick think about your vis problem, i realised that i do not have any magic tricks left up my sleeve for this one. the spillage on the right hand side can be dealt with when the playlist section is shown, but the spillage on the left cannot be hidden/masked. we have 3 choices as far as i can tell:
1. resize the spectrum
2. relocate the spectrum
3. ask danZ nicely if there is any way he can make foo_looks clip graphics that fall outside of the skin [span style='font-size:8pt;line-height:100%'](i think this option is very unlikely)[/span]
i didn't have this trouble with
hand orb, because it was a circle window, and i was able to size the spectrum so it didn't spill out into the desktop area.
i will continue to think about this problem, but i think you should know.. it might end in tears sorry.
DocUK - all of the problems you're having with playlistnumber etc. i had to deal with when i coded my fooAMP2 skin. check out the scripts in that to see if you can solve some of those hair-pulling problems you've encountered.
the script in question is
lua updatePLnum. it simply keeps the
plindex of all my tagz sprites up to date, which means that the details of the most recently played track remain displayed after you press stop. it only needs to be attached to one sprite, since it works independantly.
it's a bit of a pain the a$$, but don't blame foo_looks. in order to support full playlist display, danZ had to slightly break the old method of having a single playlist index number. tbh, it's the API's fault
--
finally,
sorry i wasn't around much earlier when this topic went through the roof. i kind of left danZ out for the slaughter.
anyway - i'm free now so i can answer any questions you may have
it's really promising to see the amount of interest we've generated today. we were not prepared for the bombardment of questions
i'm sure you all agree that danZ has done an incredible job on this wonderful plugin
3 cheers... and a couple of beers (at least next time he's in my neighbourhood)
--
and the last piece of news for the day.
my next big skin project (after
hand orb) will be a collaboration with artist Dan Mauch (http://www.ninjaskin.com)... called
Graviton (see screenshot (http://www.ninjaskin.com/graphics/graviton.jpg))
Wow... Graviton is already the best looking skin I've seen in foo_looks and it's not even out yet! Blows away what I am working on Can't wait to see it in action. I'm tired of all these very tiny looks with buttons so tiny they are actually pretty useless, this one looks nicely sized!
anza - after having a quick think about your vis problem, i realised that i do not have any magic tricks left up my sleeve for this one. the spillage on the right hand side can be dealt with when the playlist section is shown, but the spillage on the left cannot be hidden/masked. we have 3 choices as far as i can tell:
1. resize the spectrum
2. relocate the spectrum
3. ask danZ nicely if there is any way he can make foo_looks clip graphics that fall outside of the skin [span style='font-size:8pt;line-height:100%'](i think this option is very unlikely)[/span]
i didn't have this trouble with hand orb, because it was a circle window, and i was able to size the spectrum so it didn't spill out into the desktop area.
i will continue to think about this problem, but i think you should know.. it might end in tears sorry.
Well I guess I'll just have to resize the spectrum then. I'm going to have to see what I can come up.
edit: meh.. I tried to use another mask for the spilling part, but it doesn't work. When I set
int alphablend 0 for it, it starts to use a HUGE amount of CPU and memory, and also nothing changes, the visualization still spills out.. Damn, I think I really need to change the vis I would've liked it like that...
Also tk32, I'm currently using the progress bar code from your new_skin_project (was it called like that? Whatever ) and I've noticed that sometimes it thinks I'm dragging it even though I'm trying just to move the look around.
Could you tell me how to get the star thingy to work? Currently I'm just making it like this:
sprite ratingback
int layer 3
int valign align.Near
int halign align.Near
list fontcolor int { 30 76 94 124 }
list rect int { 94 11 120 28 }
int fontsize 30
string fontname "GuinnessExtraStout"
string fspec "$repeat('*',6)"
sprite rating
int layer 3
int valign align.Near
int halign align.Near
list fontcolor int { 180 76 94 124 }
list rect ratingback.rect
int fontsize 30
string fontname "GuinnessExtraStout"
string fspec "$if(%rating%,$repeat('*',%rating%))"
This works fine, but I want to use the stars from the orb.png, so I don't have to distribute another font with the look.
@anza: I like this skin. But the font for Title is so big it could only fit a few characters. Why not split it into two lines with a smaller font? I have classical pieces here whose titles are huge. And how do you set the stars?
This is just a really early release and hasn't got many of the things I've planned. One of these things is text scrolling when the title (or artist's or album's name) doesn't fit in. Of course I can make the title font a bit smaller.
I'm using a custom tag to get the stars. Just add a tag called RATING with the value of 1 to 6.
I use musicmusic's QuickTag (http://members.lycos.co.uk/musicf/) to get the values easily to context menu (and also I've binded them to Win++, Win+-, Win+1, Win+2 etc).
When 2.0 was relatively early in development, there was an image of one of the skins in development that I really liked.
It was like a winamp skin, but smaller, with a slightly different layout (I think.).
Does anyone know what I'm talking about?
http://www.btinternet.com/~sean.m.kelly/fo...oks/gallery.htm (http://www.btinternet.com/~sean.m.kelly/foo_looks/gallery.htm) <-- it's none of these.
It was a skin planned for 2.0. Perhaps it was simply a photoshop effort without any sort of functionaliy, but I'd like to know if it's still in the pipeline.
Comments and suggestions are welcome.
[span style='font-size:8pt;line-height:100%']also, remember to download the fonts (http://koti.mbnet.fi/antsau/foobar2000/orb_fonts.zip) if you haven't downloaded them before.[/span]
How could I get some text to fade in when I hover the mouse over those buttons? I'd like to get ie. "Play" to show there between the buttons and the vis.
Note: You might also need to add setEnabled(this, false), depending on which sprite (buttons or artist) you declared first. Also, I did not do any code for showing the artist again onmouseleave.
This is a good point, hiding the sprite with look_setVisible() does not disable it - that is it will still get mouse input and be clickable, etc. look_setEnabled() will prevent the mouse input. So use both functions as necessary depending on your needs.
i solved this by making 2 global functions for micropanel; enable() & disable()
it combines visible & enabled into 1 function, and also works with groups of sprites
section globals
string script "
function enable(group)
look_setVisible(group,true)
look_setEnabled(group,true)
end
function disable(group)
look_setVisible(group,false)
look_setEnabled(group,false)
end
"
Heh, it's funny when you're doing parallel development. Here's what I did (note that I came up with this independent of tk32:
function show(this)
look_setEnabled(this, true)
look_setVisible(this, true)
end
function hide(this)
look_setEnabled(this, false)
look_setVisible(this, false)
end
I had some trouble doing a conversion between LUA and TagZ:
This is working in LUA:
minvolume = look_getValue("presets", "minvolume")
percent = 1 - fb2k_getVolume() / 100 / minvolume
look_setFspec(volumelabel, percent)
But this isn't working (note that %_volume% is fb2k_getVolume() / 100):
sprite volumelabel
...
string fspec "$sub(1, $div(%_volume%, %presets._minvolume%))"
Don't worry about the maths, as it is doing exactly what I want it to. However, when I try to put the calculation into TagZ form, it does not work. I was wondering if it is because the TagZ math functions don't work to small decimals - Thousandths etc.
After reading danZ's answer here (http://www.hydrogenaudio.org/forums/index.php?showtopic=17279&view=findpost&p=181803) and the following discussion yesterday, i added look_setEnabled too, but it didn't work.
I have this in my common scrips:
lua hideOnMouseOver
function onmouseenter(this)
look_setVisible(this, false)
look_setEnabled(this, false)
end
function onmouseleave(this)
look_setVisible(this, true)
look_setEnabled(this, true)
end
endlua
and this in my main ski-file:
sprite infoarea
list rect int { 10 194 11 15 }
list srcoff int { 388 2 11 15 }
list statemap int { 0 0 0 0 0 0 0 0 0 0 }
int layer 2
list scripts string { "hideOnMouseOver" }
It's not supposed to do anything but hide and show a small piece of graphics just to try it. The hiding seems to work fine, but nothing happens "onmouseleave". It's just gone for good. I have just started playing with foo_looks again, but my thought about this problem was that after disabling it, it will no longer register a "onmouseleave". I was thinking about using the coordinats for the sprite and the position of the mouse inside the look for a later workaround, but it would be even better if it could be fixed right away.
I'll throw in a couple of questions:
1) Is it ok to use three or more ski-files and put everything except the main ski-file inside a folder? I got the idea from AeroAmp by Aero, and IMHO it's easier to keep things organized this way. A positive side effect is that common files won't show up among the looks in preferences and another is that it is easy to delete a skin (one ski-file and one folder).
2) Is extensive tiling a waste of resources? I want to have a go at it some time, so I'm just curious.
3) Is that resizable look still around? I remeber danZ posted a look that had buttons to expand and contract it, and IIRC it was quite small.
My fear now, is that I will never finish a single look, because I enjoy playing with the code and trying out different things too much
@tk32: Graviton (http://www.ninjaskin.com/graphics/graviton.jpg) just amazing IMHO
Hey,
I did a little update to my skin, now it looks like this:
Robbert
Sorry, this is better
DocUK - all of the problems you're having with playlistnumber etc. i had to deal with when i coded my fooAMP2 skin. check out the scripts in that to see if you can solve some of those hair-pulling problems you've encountered.
the script in question is lua updatePLnum. it simply keeps the plindex of all my tagz sprites up to date, which means that the details of the most recently played track remain displayed after you press stop. it only needs to be attached to one sprite, since it works independantly.
it's a bit of a pain the a$$, but don't blame foo_looks. in order to support full playlist display, danZ had to slightly break the old method of having a single playlist index number. tbh, it's the API's fault
Is it not possible to just get the play list number onattach() and onplaybacknewtrack(), and then just store that. Because right now, the fspec changes everytime I switch playlist. Only the playlist number is correct now
At the moment, I'm doing this:
lua playlistnumber
function update(this)
look_setPlaylistIndex(this, fb2k_getNowPlaying())
end
function onattach(this)
update(this)
end
function onplaybacknewtrack(this)
update(this)
end
endlua
sprite songinfo
...
string fspec "%_playlist_number%. [%artist% - ]$if(%title%,%title% ['['%album%[ #[%disc%/]$num(%tracknumber%,2)]']'],%_filename_ext%) ['('$upper($ext(%_filename_ext%))@%__bitrate%kbps')']"
list scripts string { "playlistnumber"}
1) Is it ok to use three or more ski-files and put everything except the main ski-file inside a folder? I got the idea from AeroAmp by Aero, and IMHO it's easier to keep things organized this way. A positive side effect is that common files won't show up among the looks in preferences and another is that it is easy to delete a skin (one ski-file and one folder).
yes - i'm glad you've realised this - it's a great idea
now that we are getting more serious looks, it's gonna be important to use sub dirs to store all of the skin's resources
perhaps one day we'll zip all the files and each skin will be a single file
DocUK - all of the problems you're having with playlistnumber etc. i had to deal with when i coded my fooAMP2 skin. check out the scripts in that to see if you can solve some of those hair-pulling problems you've encountered.
the script in question is lua updatePLnum. it simply keeps the plindex of all my tagz sprites up to date, which means that the details of the most recently played track remain displayed after you press stop. it only needs to be attached to one sprite, since it works independantly.
it's a bit of a pain the a$$, but don't blame foo_looks. in order to support full playlist display, danZ had to slightly break the old method of having a single playlist index number. tbh, it's the API's fault
Is it not possible to just get the play list number onattach() and onplaybacknewtrack(), and then just store that. Because right now, the fspec changes everytime I switch playlist. Only the playlist number is correct now
At the moment, I'm doing this:
lua playlistnumber
function update(this)
look_setPlaylistIndex(this, fb2k_getNowPlaying())
end
function onattach(this)
update(this)
end
function onplaybacknewtrack(this)
update(this)
end
endlua
sprite songinfo
...
string fspec "%_playlist_number%. [%artist% - ]$if(%title%,%title% ['['%album%[ #[%disc%/]$num(%tracknumber%,2)]']'],%_filename_ext%) ['('$upper($ext(%_filename_ext%))@%__bitrate%kbps')']"
list scripts string { "playlistnumber"}
the answer is probably yes,
although i havn't tested it yet so i won't try to write a script without testing it first
i was thinking of an alternative strategy however:
if you use
string text "" instead of
string fspec "" then the text will
only update when you force it to. [span style='font-size:8pt;line-height:100%'](fspecs update twice per second)[/span]
you could therefore write a script that only updates the text when you want it to [span style='font-size:8pt;line-height:100%']
(note: you would ot put the %playlistnumber% in the text string, but retrieve it in the script)[/span]
this may, or may not work
--
sorry i don't have any great deal of experience with this still
if you don't mind being patient, i'll add it to my big list of things to do
This is a simple question, but I haven't had the need to use this before now:
How do I set a color to be transparent in my sprites? I want the background to show through where the color is on those sprites.
This is a simple question, but I haven't had the need to use this before now:
How do I set a color to be transparent in my sprites? I want the background to show through where the color is on those sprites.
we removed this feature because you just have to make that area transparent, and then add { render.erase } to the start of the rendermap.
that's how our freeform skins works, but there's nothing to stop you putting holes in or around of any type of sprite graphics
in fact, for sprites you don't need to use render.erase
your sprites can be just like in URMEL's skin graphics (http://www.btinternet.com/~sean.m.kelly/skin_raw.png)
check out his .ski (http://www.btinternet.com/~sean.m.kelly/skin_raw.ski) if you're still confused
---
btw
URMEL,
did you see that i coded the volume bar for you??
http://www.hydrogenaudio.org/forums/index....ndpost&p=181520 (http://www.hydrogenaudio.org/forums/index.php?showtopic=17279&view=findpost&p=181520)
i thought you might have missed the post when the topic got busy
@tk32
I'm using your micropanel and am very happy with it, except for the missing volume slider.
I would love to have a volume slider that controls the main system volume level and not foobar's volume level (because of foobar's delayed reaction to volume changes that is quite annoying).
Sorry to bother you, but I can't code it myself, so I kindly ask you, if you could please do it for me?
Do you remember, we discussed it before:
you're right - i have omitted a volume control from micropanel - but i can easily add one
in fact, the vertical white bar was reserved for that very reason
to be honest - i wanted to know how important it was for people to have one.
i will have an update by the end of the day
This is a simple question, but I haven't had the need to use this before now:
How do I set a color to be transparent in my sprites? I want the background to show through where the color is on those sprites.
we removed this feature because you just have to make that area transparent, and then add { render.erase } to the start of the rendermap.
So transparent areas will only work with PNGs (and GIFs)?
So transparent areas will only work with PNGs (and GIFs)?
Why would you want to use some other format than PNG?
j/k
tk32: Is there a way to get rid of the "..."?
(http://koti.mbnet.fi/antsau/foobar2000/orb_beta2.png)
edit: nevermind, got it already
anza, when I drag your skin, my song skips. This doesn't happen with other skins (such as foo_looks, micropanel, fooAMP2) so I'm wondering what is causing it.
This is a simple question, but I haven't had the need to use this before now:
How do I set a color to be transparent in my sprites? I want the background to show through where the color is on those sprites.
we removed this feature because you just have to make that area transparent, and then add { render.erase } to the start of the rendermap.
So transparent areas will only work with PNGs (and GIFs)?
PNG is the recommended file type
but gif is usable (if you don't mind using only 256 colors, and having jagged edges)
bernard - i will add the volume control very soon, but it will still be the delayed volume kind. there is no way to code any other type at the moment
for an example of what it will be like, try the orange volume bar in URMEL's skin that i coded for him recently.
URMEL's skin + tk32's custom volume bar
skin_raw.png (http://www.btinternet.com/~sean.m.kelly/skin_raw.png)
skin_raw.ski (http://www.btinternet.com/~sean.m.kelly/skin_raw.ski)
I have the same problem (or at least I think I have).
Sometimes it seems to try to move the progressbar when you try to move the skin around, and I have NO idea what is causing this. Maybe tk32 could have a look at my .ski? And it doesn't even occur all the time.. Weid.
If you want to see some sort of text scrolling (done with TAGZ, so it's really ugly), download the new version (http://koti.mbnet.fi/antsau/foobar2000/orb.zip).
I have the same problem (or at least I think I have).
Sometimes it seems to try to move the progressbar when you try to move the skin around, and I have NO idea what is causing this. Maybe tk32 could have a look at my .ski? And it doesn't even occur all the time.. Weid.
If you want to see some sort of text scrolling (done with TAGZ, so it's really ugly), download the new version (http://koti.mbnet.fi/antsau/foobar2000/orb.zip).
ok
i have identified the problem..
whever you rollover the progress bar and then click another part of the skin, it seems to trigger
onleftbuttonup in the progbar script, which results in the brief skip/repeat you hear
if you carefully move the cursor into the skin without touching the progbar, you don't get this problem
i think it's either a problem with my dragbar script, or else a problem with the plugin, since there is nothing wrong with anza's code
we'll have a fix worked out soon
danZ:
A function to write to the foobar2000 console would be nice (for debugging).
danZ:
A function to write to the foobar2000 console would be nice (for debugging).
sorry
we forgot to mention this one
LOG('hello, world!')
LOG("hello, world!")
LOG('variable x: '..x)
LOG(x..' + '..y..' = '..x+y)
danZ & myself use it all the time for debugging
danZ:
A function to write to the foobar2000 console would be nice (for debugging).
sorry
we forgot to mention this one
danZ & myself use it all the time for debugging
Arghs! That would've helped so much!
tk32, ok thanks for "solving" that problem
I'm just beginning to design the button that would make the playlist to slide out/back in, so I'd really appreciate if someone would write me the code needed for that (and of course for the playlist itself).
Also I wouldn't mind having a good text scrolling script that would scroll the text smoothly and not like I'm now doing it.
TIA.
tk32, ok thanks for "solving" that problem
I'm just beginning to design the button that would make the playlist to slide out/back in, so I'd really appreciate if someone would write me the code needed for that (and of course for the playlist itself).
Also I wouldn't mind having a good text scrolling script that would scroll the text smoothly and not like I'm now doing it.
TIA.
ok
it will take a little more time than danZ expected
because you can't simply re-use the tray code he had written for the default look
the tray code simply slides out the tray, but your tray is bigger than the whole skin, so your tray will need to grow in size rather than slide
i'm happy to have a go at it once the graphics are all ready - but i'm just warning you it may take more than a day or 2 depending on how many other jobs i have going
as for text scroll - we are still discussing the best way to approach this at the concept level. we'll let you all know once we've decided the best startegy to scroll text
Is it possible for two scripts assigned to the same sprite to share functions?
I want to do some abstraction, so my progress and volume bars can share some code (the code to get and set percentages, and to be dragged, etc). All my code is ready for merging, but one script doesn't seem to be able to see the others' functions.
Is it possible for two scripts assigned to the same sprite to share functions?
I want to do some abstraction, so my progress and volume bars can share some code (the code to get and set percentages, and to be dragged, etc). All my code is ready for merging, but one script doesn't seem to be able to see the others' functions.
the only way i can think of doing this is
1. make the shared functions global (like my
enable /
disable functions)
2. combine the two scripts into 1 and set a flag to determine which one to use
eg
sprite vol
list scripts string { "progAndVol[type=vol]" }
sprite prog
list scripts string { "progAndVol[type=prog]" }
Not very elegant, really. Oh well
I'm stuck again
How do I pass the name of a sprite to a LUA script in my common-ski?
This is the script I want to pass it to:
lua relativeDisplacement
myRect = { }
MY = nil
function displace(this, MY)
myRect.x = look_getX(MY) + 10
myRect.y = look_getY(MY)
look_setX(pause,myRect.x)
look_setY(pause,myRect.y)
end
function onleftbuttonup(this)
displace()
end
endlua
and this is the line in my sprite where I try to pass the name of the sprite:
list scripts string { "relativeDisplacement[MY=play]" }
The code above gives me this error:
ERROR (foo_looks) : attempt to perform arithmetic on a nil value
, but if I change MY -> play (the name of the sprite I want to read the 'x' value from) it works. One problem is that I don't know how to initialize "MY", and the other is that I don't know how to use it to pass the name of a sprite ('play').
What I'm trying to do is to make a script that places buttons relatively to each other (in this case the pause button relative to the play button). Right now I do it with a onleftbuttonup, in a temporary sprite just because I don't know how to make this happen "by itself" on startup (I have tried a couple of things woth onattach(), but I can't get it to work).
I hope some of this makes sense and that someone can help me...
Is it possible for two scripts assigned to the same sprite to share functions?
I want to do some abstraction, so my progress and volume bars can share some code (the code to get and set percentages, and to be dragged, etc). All my code is ready for merging, but one script doesn't seem to be able to see the others' functions.
On script can call another script so you can do some cross script messaging but there is currently a limitation that I need to solve in that you can't return a value from the function call.
Search the default look and/or foo_looks_common.ski for
look_callScript()
I'm stuck again
How do I pass the name of a sprite to a LUA script in my common-ski?
This is the script I want to pass it to:lua relativeDisplacement
myRect = { }
MY = nil
function displace(this, MY)
myRect.x = look_getX(MY) + 10
myRect.y = look_getY(MY)
look_setX(pause,myRect.x)
look_setY(pause,myRect.y)
end
function onleftbuttonup(this)
displace()
end
endlua
and this is the line in my sprite where I try to pass the name of the sprite:list scripts string { "relativeDisplacement[MY=play]" }
The code above gives me this error: ERROR (foo_looks) : attempt to perform arithmetic on a nil value
, but if I change MY -> play (the name of the sprite I want to read the 'x' value from) it works. One problem is that I don't know how to initialize "MY", and the other is that I don't know how to use it to pass the name of a sprite ('play').
What I'm trying to do is to make a script that places buttons relatively to each other (in this case the pause button relative to the play button). Right now I do it with a onleftbuttonup, in a temporary sprite just because I don't know how to make this happen "by itself" on startup (I have tried a couple of things woth onattach(), but I can't get it to work).
I hope some of this makes sense and that someone can help me...
Remove the parameter list from your displace function declaration. MY is global to all the functions in this lua/endlua block so doesn't need to be a paramter. You can simply access it
lua relativeDisplacement
myRect = { }
MY = nil
function displace() -- no parameters needed
myRect.x = look_getX(MY) + 10
myRect.y = look_getY(MY)
look_setX(pause,myRect.x)
look_setY(pause,myRect.y)
end
function onleftbuttonup(this)
displace()
end
endlua
Thanks danZ
it will take a little more time than danZ expected
because you can't simply re-use the tray code he had written for the default look
the tray code simply slides out the tray, but your tray is bigger than the whole skin, so your tray will need to grow in size rather than slide
I'm not sure about this - I was thinking that as the tray slid to the closed position it will get clipped by the oval and appear to shrink. That is, as it moves to the left it will go under the oval and then gradually off the left side of the look which will clip it.
I'd give it a try before writing any new code.
This is a simple question, but I haven't had the need to use this before now:
How do I set a color to be transparent in my sprites? I want the background to show through where the color is on those sprites.
we removed this feature because you just have to make that area transparent, and then add { render.erase } to the start of the rendermap.
So transparent areas will only work with PNGs (and GIFs)?
PNG is the recommended file type
but gif is usable (if you don't mind using only 256 colors, and having jagged edges)
bernard - i will add the volume control very soon, but it will still be the delayed volume kind. there is no way to code any other type at the moment
for an example of what it will be like, try the orange volume bar in URMEL's skin that i coded for him recently.
URMEL's skin + tk32's custom volume bar
skin_raw.png (http://www.btinternet.com/~sean.m.kelly/skin_raw.png)
skin_raw.ski (http://www.btinternet.com/~sean.m.kelly/skin_raw.ski)
You can still specify a transparent colorkey
sprite foobar
list transcolor int { 255 255 0 0 } // make all red pixels transparent
but the performace is horrible because GDI+ is very slow when blitting with a color key matrix.
Using a 32 bit PNG image with the transparency defined using the alpha channel is faster, more flexible, and easier.
Is it not possible to just get the play list number onattach() and onplaybacknewtrack(), and then just store that. Because right now, the fspec changes everytime I switch playlist. Only the playlist number is correct now
This is why there is a concept of now playing (-1) and a specific playlist index. Now playing is its own meta data and not associated with any playlist or playlist index and that is why is only shows up if foobar is playing. Also, it remains even as the playlist is changed. The con is that there is no playlist number.
Using a specific playlist index means you can show playlist number, have the text formatted regardless of the playback state (playing, stopped, etc.), but it changes with any changes in the playlist.
This is just the way the foobar API works. It makes sense if you really sit down and think about it (which I did when dealing with this issue during development). foo_looks 1.0 was somewhat flawed in the area of text formatting IMHO.
Is it not possible to just get the play list number onattach() and onplaybacknewtrack(), and then just store that. Because right now, the fspec changes everytime I switch playlist. Only the playlist number is correct now
This is why there is a concept of now playing (-1) and a specific playlist index. Now playing is its own meta data and not associated with any playlist or playlist index and that is why is only shows up if foobar is playing. Also, it remains even as the playlist is changed. The con is that there is no playlist number.
Using a specific playlist index means you can show playlist number, have the text formatted regardless of the playback state (playing, stopped, etc.), but it changes with any changes in the playlist.
This is just the way the foobar API works. It makes sense if you really sit down and think about it (which I did when dealing with this issue during development). foo_looks 1.0 was somewhat flawed in the area of text formatting IMHO.
Well alright, I think I understand how it works now. Do you have any suggestions for how I could grab artist, title, album, tracknumber, bitrate, and format from the Now Playing index (-1), and the playlist number from the active playlistindex?
anza - after having a quick think about your vis problem, i realised that i do not have any magic tricks left up my sleeve for this one. the spillage on the right hand side can be dealt with when the playlist section is shown, but the spillage on the left cannot be hidden/masked. we have 3 choices as far as i can tell:
1. resize the spectrum
2. relocate the spectrum
3. ask danZ nicely if there is any way he can make foo_looks clip graphics that fall outside of the skin [span style='font-size:8pt;line-height:100%'](i think this option is very unlikely)[/span]
i didn't have this trouble with hand orb, because it was a circle window, and i was able to size the spectrum so it didn't spill out into the desktop area.
i will continue to think about this problem, but i think you should know.. it might end in tears sorry.
Well I guess I'll just have to resize the spectrum then. I'm going to have to see what I can come up.
I need to give this some more thought - avoid this situation for now like you have done by resizing your layout.
I have a question about the rendermaps. I don't understand the significance or the use for them. I mean, if I don't specify any fillcolors, will not specifying render.Fill improve performance? Why would you want to not render something you have specified as well?
I don't get it, can you please explain
Is it not possible to just get the play list number onattach() and onplaybacknewtrack(), and then just store that. Because right now, the fspec changes everytime I switch playlist. Only the playlist number is correct now
This is why there is a concept of now playing (-1) and a specific playlist index. Now playing is its own meta data and not associated with any playlist or playlist index and that is why is only shows up if foobar is playing. Also, it remains even as the playlist is changed. The con is that there is no playlist number.
Using a specific playlist index means you can show playlist number, have the text formatted regardless of the playback state (playing, stopped, etc.), but it changes with any changes in the playlist.
This is just the way the foobar API works. It makes sense if you really sit down and think about it (which I did when dealing with this issue during development). foo_looks 1.0 was somewhat flawed in the area of text formatting IMHO.
Well alright, I think I understand how it works now. Do you have any suggestions for how I could grab artist, title, album, tracknumber, bitrate, and format from the Now Playing index (-1), and the playlist number from the active playlistindex?
This is psuedo-code - didn't test it but it shows the idea I think will work
lua myformat
spec = ""
function onplaybackstart(this)
updatetext(this)
end
function onplaybacknewtrack(this)
updatetext(this)
end
function updatetext(this)
local index = fb2k_getNowPlaying()
local text = fb2k_formatTitle(index,spec,nil))
look_setText(this,index..": "..text)
end
endlua
sprite nowPlaying
string fspec "" // don't set the fspec
list scripts string { "myformat[spec='%artist% and whatever']" }
I have a question about the rendermaps. I don't understand the significance or the use for them. I mean, if I don't specify any fillcolors, will not specifying render.Fill improve performance? Why would you want to not render something you have specified as well?
I don't get it, can you please explain
You can use the render map to control what gets rendered AND/OR the order.
sprite textonly
list rendermap int { render.Text }
sprite textonfill
list rendermap int { render.Fill render.Text }
sprite fillovertext
list rendermap int { render.Text render.Fill }
sprite textoverimage
list rendermap int { render.Text render.Image }
sprite nothing
list rendermap int { }
By default the render map is { render.Image render.Fill render.Text render.Border }
Its true you can set null text, invisible colors, etc. which gives the same effect as removing items from the render map but I did it this way so that you could just define a fill color and then get a fill, etc. with out dealing with render map.
Render map is for advanced users/uses.
I have a question about the rendermaps. I don't understand the significance or the use for them. I mean, if I don't specify any fillcolors, will not specifying render.Fill improve performance? Why would you want to not render something you have specified as well?
I don't get it, can you please explain
You can use the render map to control what gets rendered AND/OR the order.
sprite textonly
list rendermap int { render.Text }
sprite textonfill
list rendermap int { render.Fill render.Text }
sprite fillovertext
list rendermap int { render.Text render.Fill }
sprite textoverimage
list rendermap int { render.Text render.Image }
sprite nothing
list rendermap int { }
By default the render map is { render.Image render.Fill render.Text render.Border }
Its true you can set null text, invisible colors, etc. which gives the same effect as removing items from the render map but I did it this way so that you could just define a fill color and then get a fill, etc. with out dealing with render map.
Render map is for advanced users/uses.
What effect does specifying a rendermap have on performance?
I have a question about the rendermaps. I don't understand the significance or the use for them. I mean, if I don't specify any fillcolors, will not specifying render.Fill improve performance? Why would you want to not render something you have specified as well?
I don't get it, can you please explain
You can use the render map to control what gets rendered AND/OR the order.
sprite textonly
list rendermap int { render.Text }
sprite textonfill
list rendermap int { render.Fill render.Text }
sprite fillovertext
list rendermap int { render.Text render.Fill }
sprite textoverimage
list rendermap int { render.Text render.Image }
sprite nothing
list rendermap int { }
By default the render map is { render.Image render.Fill render.Text render.Border }
Its true you can set null text, invisible colors, etc. which gives the same effect as removing items from the render map but I did it this way so that you could just define a fill color and then get a fill, etc. with out dealing with render map.
Render map is for advanced users/uses.
What effect does specifying a rendermap have on performance?
Not much in most cases. That is, having a fillcolor of { 0 0 0 0 } is just as good as defining a rendermap with "render.Fill" removed.
Removing render.Image from the map is about the only think that could potentially improve performance.
Again, its for flexibility in ordering or special circumstances, not performance.
sprite fillovertext
list rendermap int { render.Text render.Fill }
sprite textoverimage
list rendermap int { render.Text render.Image }
This looks inconsistent to me. The last one is "imageovertext" isn't it?
sprite fillovertext
list rendermap int { render.Text render.Fill }
sprite textoverimage
list rendermap int { render.Text render.Image }
This looks inconsistent to me. The last one is "imageovertext" isn't it?
Yeah, cut and paste and in a hurry error...
EDIT:
i just duplicated danZ' answer
Is it not possible to just get the play list number onattach() and onplaybacknewtrack(), and then just store that. Because right now, the fspec changes everytime I switch playlist. Only the playlist number is correct now
This is why there is a concept of now playing (-1) and a specific playlist index. Now playing is its own meta data and not associated with any playlist or playlist index and that is why is only shows up if foobar is playing. Also, it remains even as the playlist is changed. The con is that there is no playlist number.
Using a specific playlist index means you can show playlist number, have the text formatted regardless of the playback state (playing, stopped, etc.), but it changes with any changes in the playlist.
This is just the way the foobar API works. It makes sense if you really sit down and think about it (which I did when dealing with this issue during development). foo_looks 1.0 was somewhat flawed in the area of text formatting IMHO.
Well alright, I think I understand how it works now. Do you have any suggestions for how I could grab artist, title, album, tracknumber, bitrate, and format from the Now Playing index (-1), and the playlist number from the active playlistindex?
This is psuedo-code - didn't test it but it shows the idea I think will work
lua myformat
spec = ""
function onplaybackstart(this)
updatetext(this)
end
function onplaybacknewtrack(this)
updatetext(this)
end
function updatetext(this)
local index = fb2k_getNowPlaying()
local text = fb2k_formatTitle(index,spec,nil))
look_setText(this,index..": "..text)
end
endlua
sprite nowPlaying
string fspec "" // don't set the fspec
list scripts string { "myformat[spec='%artist% and whatever']" }
Okay I got it to work. But now I decided to be clever:
This works (note that I used index + 1 so it matches playlist numbers):
section presets
string songinfospec "[%artist% - ]$if(%title%,%title% ['['%album%[ #[%disc%/]$num(%tracknumber%,2)]']'],%_filename_ext%) ['('$upper($ext(%_filename_ext%))@%__bitrate%kbps')']"
lua songinfo
function updateText(this)
index = fb2k_getNowPlaying()
spec = look_getValue("presets", "songinfospec")
text = fb2k_formatTitle(index, spec, nil)
look_setText(this, (index + 1)..". "..text)
end
function onattach(this)
updateText(this)
end
function onplaybacknewtrack(this)
updateText(this)
end
endlua
sprite songinfo
...
string fspec ""
list scripts string { "songinfo"}
However, I wanted it to be intuitive, so I figured I could replace %_playlist_number% in the spec with the index before I used it to format my getNowPlaying() info. The code below actually crashes foobar2000 saying:
ERROR (foo_looks) : malformed pattern (ends with '%')
section presets
string songinfospec "%_playlist_number%. [%artist% - ]$if(%title%,%title% ['['%album%[ #[%disc%/]$num(%tracknumber%,2)]']'],%_filename_ext%) ['('$upper($ext(%_filename_ext%))@%__bitrate%kbps')']"
lua songinfo
function updateText(this)
index = fb2k_getNowPlaying()
spec = look_getValue("presets", "songinfospec")
spec = gsub(spec, "%_playlist_number%", index)
text = fb2k_formatTitle(index, spec, nil)
look_setText(this, text)
end
function onattach(this)
updateText(this)
end
function onplaybacknewtrack(this)
updateText(this)
end
endlua
sprite songinfo
...
string fspec ""
list scripts string { "songinfo"}
I don't know what I'm doing wrong. Why can't I manually replace %_playlist_number% with the index, and then format getNowPlaying() against this new spec? Do some of the functions parse the TagZ or what?
I don't know what I'm doing wrong. Why can't I manually replace %_playlist_number% with the index, and then format getNowPlaying() against this new spec? Do some of the functions parse the TagZ or what?
I think % has special meaning in the gsub() function
See Lua 4.0 string functions (http://www.lua.org/manual/4.0/manual.html#6.2)
Two more questions:
1) I seem to have problem understanding the word "this". I thought that if I used it instead of the name of a sprite in e.g. "look_setY(sprite [ {sprite, ... } ], y)" then it would mean the name of the sprite that called the script/function e.g. "pause" in the last code I posted (like this: look_setY(this,myRect.y)). If so, there is another problem in my code.
2) Can I get something like "look_getSrcWidth(sprite)"? I want to use it to set the width of the rect as they tend to be the same.
Two more questions:
1) I seem to have problem understanding the word "this". I thought that if I used it instead of the name of a sprite in e.g. "look_setY(sprite [ {sprite, ... } ], y)" then it would mean the name of the sprite that called the script/function e.g. "pause" in the last code I posted (like this: look_setY(this,myRect.y)). If so, there is another problem in my code.
2) Can I get something like "look_getSrcWidth(sprite)"? I want to use it to set the width of the rect as they tend to be the same.
for the predefined handlers "this" is the sprite that is currently having this handler called.
simple example
lua logname
function onleftbuttondown(this)
LOG(look_getName(this))
end
endlua
sprite foo
list scripts string { "logname" }
sprite bar
list scripts string { "logname" }
Both sprites have the same script attached (each gets a copy attached to it). When the component detects the left button down on either sprite it sets the this parameter to the sprite in question and calls the handler.
the output if you click on sprite foo is "foo" if you click on bar it is "bar"
This is how one script can be written and then applied to several different sprites.
Thanks danZ, I got it:
function updateText(this)
index = fb2k_getNowPlaying()
spec = gsub(look_getValue("presets", "songinfospec"), "%%_playlist_number%%", index + 1)
text = fb2k_formatTitle(index, spec, nil)
look_setText(this, text)
end
Any suggestions about what I should do if nothing is playing onattach?
I will do if (index < 0) but should I show what is currently selected in the playlist or what? How would I do that?
I hope you don't mind all these questions, but I have struggled alot without getting things right. After reading the answer to my last 1) question I wonder what I do wrong this time.
These are my sprites:
sprite prev
string include "Playback_Buttons"
list rect int { 10 2 9 15 }
list srcoff int { 305 2 9 15 }
list scripts string { "playback[type='prev']" }
sprite play
string include "Playback_Buttons"
int width 9
int height 15
//list rect int { 22 2 9 15 }
list srcoff int { 318 2 9 15 }
list scripts string { "relativeDisplacement[model=prev target=play relX=12]", "playback[type='play']" }
and this is the script:
lua relativeDisplacement
myRect = { }
model = nil
target = nil
function displace()
myRect.x = look_getX(model) + relX
myRect.y = look_getY(model)
look_setX(target,myRect.x)
look_setY(target,myRect.y)
end
function onattach(this)
displace()
end
endlua
I would like to avoid the use of "target" and use "this" instead, but it doesn't work. Is it the way I use "onattach" that causes this?
Btw: The script is in my common-ski and the sprites are in my main-ski if that matters.
Thanks danZ, I got it:
function updateText(this)
index = fb2k_getNowPlaying()
spec = gsub(look_getValue("presets", "songinfospec"), "%%_playlist_number%%", index + 1)
text = fb2k_formatTitle(index, spec, nil)
look_setText(this, text)
end
Any suggestions about what I should do if nothing is playing onattach?
I will do if (index < 0) but should I show what is currently selected in the playlist or what? How would I do that?
fb2k_playlistGetFocus()
which will return -1 if nothing has the focus in which case you might then do
fb2k_playlistSetFocusSel(0) or something
but then the playlist might be empty so you better check
fb2k_playlistGetCount() first
Thanks danZ, I got it:
function updateText(this)
index = fb2k_getNowPlaying()
spec = gsub(look_getValue("presets", "songinfospec"), "%%_playlist_number%%", index + 1)
text = fb2k_formatTitle(index, spec, nil)
look_setText(this, text)
end
Any suggestions about what I should do if nothing is playing onattach?
I will do if (index < 0) but should I show what is currently selected in the playlist or what? How would I do that?
fb2k_playlistGetFocus()
which will return -1 if nothing has the focus in which case you might then do
fb2k_playlistSetFocusSel(0) or something
but then the playlist might be empty so you better check
fb2k_playlistGetCount() first
Ok, once I make sure something is selected, how do I get its info?
I hope you don't mind all these questions, but I have struggled alot without getting things right. After reading the answer to my last 1) question I wonder what I do wrong this time.
These are my sprites:sprite prev
string include "Playback_Buttons"
list rect int { 10 2 9 15 }
list srcoff int { 305 2 9 15 }
list scripts string { "playback[type='prev']" }
sprite play
string include "Playback_Buttons"
int width 9
int height 15
//list rect int { 22 2 9 15 }
list srcoff int { 318 2 9 15 }
list scripts string { "relativeDisplacement[model=prev target=play relX=12]", "playback[type='play']" }
and this is the script:lua relativeDisplacement
myRect = { }
model = nil
target = nil
function displace()
myRect.x = look_getX(model) + relX
myRect.y = look_getY(model)
look_setX(target,myRect.x)
look_setY(target,myRect.y)
end
function onattach(this)
displace()
end
endlua
I would like to avoid the use of "target" and use "this" instead, but it doesn't work. Is it the way I use "onattach" that causes this?
Btw: The script is in my common-ski and the sprites are in my main-ski if that matters.
You can pass the "this" parameter around to your own locally defined functions.
When attached to the sprite play "this" will be equal to passing play for target.
lua relativeDisplacement
myRect = { }
model = nil
function displace(this)
myRect.x = look_getX(model) + relX
myRect.y = look_getY(model)
look_setX(this,myRect.x)
look_setY(this,myRect.y)
end
function onattach(this)
displace(this)
end
endlua
Thanks danZ, I got it:
function updateText(this)
index = fb2k_getNowPlaying()
spec = gsub(look_getValue("presets", "songinfospec"), "%%_playlist_number%%", index + 1)
text = fb2k_formatTitle(index, spec, nil)
look_setText(this, text)
end
Any suggestions about what I should do if nothing is playing onattach?
I will do if (index < 0) but should I show what is currently selected in the playlist or what? How would I do that?
fb2k_playlistGetFocus()
which will return -1 if nothing has the focus in which case you might then do
fb2k_playlistSetFocusSel(0) or something
but then the playlist might be empty so you better check
fb2k_playlistGetCount() first
Ok, once I make sure something is selected, how do I get its info?
You just need to make updatetext a little more robust.
function updateText(this)
index = fb2k_getNowPlaying()
if (index == -1) then
index = fb2k_playlistGetFocus()
if (index == -1 && fb2k_playlistGetCount() > 0) then
index = 0
fb2k_playlistSetFocusSel(0)
end
end spec = gsub(look_getValue("presets", "songinfospec"), "%%_playlist_number%%", index + 1)
text = fb2k_formatTitle(index, spec, nil)
look_setText(this, text)
end
again I didn't test this for syntax errors but you get the idea.
@danZ: Thank you so much, it worked after I placed the two missing 'this' inside displace(). Changing it to displace(this).
At least it feels like I'm starting to understand some of this now
I don't understand the differences between the following functions:
fb2k_playlistSetFocusSel(index)
fb2k_playlistSetSel(index, select)
fb2k_playlistSetFocus(index)
fb2k_playlistGetFocus()
Please explain
I don't understand the differences between the following functions:
fb2k_playlistSetFocusSel(index)
fb2k_playlistSetSel(index, select)
fb2k_playlistSetFocus(index)
fb2k_playlistGetFocus()
Please explain
DocUK, no offense, but since you've reached a more advanced level, it might be better to ask your questions in the form of emails
i get the impression this forum is turning into a DocUK personal tutorial
no offense
Erk okay sure. I think it's better if everyone gets the benefit of questions and answers, I mean you don't have to answer, but I used answers from other questions to work on my looks as well.
It doesn't feel like I'm hogging the board, but sure - Should I e-mail danZ or you?
sorry
i don't want to disuade you from asking questions
questions are great
but i get the feeling your level of experience is far exceeding the majority of new look-coders that browse here for basic tips
you can email either of us, although very specific function questions & problems should go to the man who wrote them
tk32: ()
danZ: ()
Answers to questions like DocUK's last one would be something for the "resource page". I agree with him that it's not obvious what the differens is (I haven't looked at them before though).
A thread like this one gets too long to read after a while. Luckily I have followed it, but I believe time spent on a FAQ, tutorial and reference is more valuable in the long run. Apart from that, I really appreciate the help I get here.
I'm just interested in getting quick replies, and this board provides that. I'm afraid if I use e-mail my questions won't be answered as quickly.
ok
you both make good points
perhaps you should just ignore me
besides, DocUK has almost reached the stage where he can assist others
--
btw, i added a rotational dial to hand orb
hand_orb.png (http://www.btinternet.com/~sean.m.kelly/hand_orb.png)
dial_new.png (http://www.btinternet.com/~sean.m.kelly/dial_new.png)
hand_orb.ski (http://www.btinternet.com/~sean.m.kelly/hand_orb.ski)
i havn't added any functionality to it yet though [span style='font-size:8pt;line-height:100%'](and i might decide to remove the little purple inner-disc)[/span]
@tk32: I'm tired, but did you link to the old hand_orb.ski or something? I can't see anything new in hand_orb.
the new code is at the bottom
2 new sprites and a new script
did you try loading it yet?
edit:
my guess is that you accidentally saved the .ski as a txt file
---
btw, i am really working hard on my dragBar script
to make it
- easy to undertand (with usage guidelines)
- more efficient to use
- less bugs
- very re-usable
- horizontal/vertical modes
- able to support custom graphics & grips, or else work in 'fill mode'
this might become the essential dragbar/slider
I have no idea what caused it, but it works now.
I think I need to get some sleep soon...
b nice if somebody redid the coal skin, in my opinon thats the best toolbar like skin
If you talk about this one:
thx docuk, any idea when its gonna b done?
this is crazy, i didnt visit this thread in 1 day and 6pages r added when i get back lol
btw think we need a new thread hehe
btw when will this http://www.barciaonline.com/aural/foobarlo...foobarlooks.htm (http://www.barciaonline.com/aural/foobarlooks/foobarlooks.htm) site b updated?
Yes I agree. Could you start a new thread for new 2.1 skins (advertisement) and use this thread for developers/technical issues? That would me more efficient for everyone.
anza,
danZ discovered what was causing the sticky bug that causes your orb skin to skip/repeat after you'd hovered over the progBar
it was partly a bug, and partly my fault, as i left a line of code in hand_orb.ski that shouldn't be there, and it seems you copied that same problem into your own skin
the line of code in question is setting
bool enabled false as a global variable
section globals
bool enabled false
...
'hand orb' didn't have any enabled sprites, but i forgot background had to be enabled for 'draglook' to respond.
the bug was that it was still responding, despite inheriting it's disabled setting from the globals
the best way to fix it is to add
bool enabled true to the background sprite
sprite background
bool enabled true
....
--
as for the bug - it's not a serious problem, but here is an updated build of the plugin that fixes it
foo_looks 2.1 beta3 (http://www.btinternet.com/~sean.m.kelly/foo_looks_2.1_beta3.zip)
b nice if somebody redid the coal skin, in my opinon thats the best toolbar like skin
If you talk about this one:
thx docuk, any idea when its gonna b done?
this is crazy, i didnt visit this thread in 1 day and 6pages r added when i get back lol
btw think we need a new thread hehe
btw when will this http://www.barciaonline.com/aural/foobarlo...foobarlooks.htm (http://www.barciaonline.com/aural/foobarlooks/foobarlooks.htm) site b updated?
I will post it today, probably. It is actually a remake of my earlier look Carbon, which was based on Coal. I posted a screenshot of the skin in progress earlier in the thread.
Just wanted to post this script for people with the same problem.
This script puts you in control over what is displayed and when. It solves the problem of the playlist indexes by manually replacing the TagZ before formatting the nowplaying info against the spec.
This works well:
section presets
string songinfospec "%_playlist_number%. [%artist% - ]$if(%title%,%title% ['['%album%[ #$num(%tracknumber%,2)]']'],%_filename%) ['('$upper($ext(%_filename_ext%))@%__bitrate%kbps')']"
lua songinfo
function updateText(this)
index = fb2k_getNowPlaying()
if (index < 0) then
if (fb2k_playlistGetCount() == 0) then
look_setText(this, "[Playlist Empty]")
return
else
index = fb2k_playlistGetFocus()
if (index < 0) then
look_setText(this, "[Nothing Selected]")
return
end
end
end
spec = gsub(look_getValue("presets", "songinfospec"), "%%_playlist_number%%", index + 1)
text = fb2k_formatTitle(index, spec, nil)
look_setText(this, text)
end
function onattach(this)
updateText(this)
end
function onplaybacknewtrack(this)
updateText(this)
end
endlua
sprite songinfo
...
list scripts string { "songinfo"}
First off my apologies for asking such a stupid question (trying to make the most of the growing interest in foo_looks ).
I was wondering if it is possible to code a button to open a separate/sliding window and display a specific tag of the currently playing song.
I have many MP3s tagged with %lyrics% and... well I guess you understand what I'm after .
Alessandro
First off my apologies for asking such a stupid question (trying to make the most of the growing interest in foo_looks ).
I was wondering if it is possible to code a button to open a separate/sliding window and display a specific tag of the currently playing song.
I have many MP3s tagged with %lyrics% and... well I guess you understand what I'm after .
Alessandro
yes
this is very possible - and would be a great idea for a custom skin
why don't you draw a concept sketch on paper or with graphics software
---
btw, no question is too stupid
i will gladly answer any questions from beginner to advanced, even if we've covered it before
DocUK, thanks for posting the script - i'll try it out soon
perhaps we should start a foo_looks LUA script thread for more like this
tk32, thanks for solving the problem!
New version is downloadable at the same location (http://koti.mbnet.fi/antsau/foobar2000/orb.zip).
I use TextPad as my editor, and I just wondered if anyone has made a syntax highlighting file they want to share? It's ok if it's not originally made for TextPad, as long as it is readable text in it. I thought I could save myself some time by asking before starting on one myself.
Btw: I quite like TextPad, but I'm open to other suggestions. I have a student license for TextPad, and I might be able to get one for other editors too, but freeware recommandations would be the easiest.
I use TextPad as my editor, and I just wondered if anyone has made a syntax highlighting file they want to share? It's ok if it's not originally made for TextPad, as long as it is readable text in it. I thought I could save myself some time by asking before starting on one myself.
Btw: I quite like TextPad, but I'm open to other suggestions. I have a student license for TextPad, and I might be able to get one for other editors too, but freeware recommandations would be the easiest.
i was using ultraedit
i modified the C syntax highlighting for foo_looks + LUA syntax
is textpad better? i don't know it
why don't you draw a concept sketch on paper or with graphics software
Thanks for taking time to reply.
Unfortunately my graphics skills (both on paper and on computer) are below zero.
I'm going to try and describe with my poor English what I imagine.
- Separate window: in the default skin you have "P" and "C" buttons for Playback and Components. In a similar way, "L" button opens a new window containing the desired tag information. Ideally the user can easily specify the name of the tag, fonts and colors used. Besides, it should remember windows position and size. Text should wrap (no horizontal scrolling) and blank lines should NOT be ignored.
- Sliding panel: alternatively (but I'd prefer the first method) you can design a "hotspot" in your look. When you mouseover (or click) it, a panel would pop out (sliding down? right? dunno). The above mentioned properties still apply (except panel position and, perhaps, size); also you would need a button to hide the panel (I don't think it should auto-hide on mouseleave).
I hope this is enough to get you going .
Alessandro
I use TextPad as my editor
TextPad rulez! .
Alessandro
ok
i've installed textpad
and i'll work on a syntax highlighting file for .ski files
ok
i've installed textpad
and i'll work on a syntax highlighting file for .ski files
I hope you didn't think I expected you to install TextPad to make a syntax highlighting file?
I don't really know any other editors, but TextPad's "Clip Library" is something I find quite useful. All my Tagz editing was made alot easier with "Clip Library" and syntax highlighting.
Tom, check your e-mail.
no
it's cool
i'm interested in finding the ideal editing suite for it too
perhaps if you have more experience with textpad you can help me get started on a syntax highlighting file
then i can add the missing parts
(http://www.btinternet.com/~sean.m.kelly/highlight_demo.gif)
EDIT:
got 'this' to highlight now
New look available: Carbon (http://www.btinternet.com/%7Esean.m.kelly/carbon.rar) by DocUK
DocUK
A foo_looks syntax highlighting file for TextPad (http://www.stud.ntnu.no/~mortek/foobar2000/foobar2000(foo_looks).syn) I threw together. I don't really know alot about such files or programming in general, but it seems to work ok.
If you do corrections or improve it, please share it so that we all can benefit from it
Btw: v.4.7 (or later) of TextPad may be required to use it.
Edit: Updated! Corrected a mistake I made in the first version.
Edit2: Updated! Added some more words and did some sorting.
Edit3: Updated! Minor update, just a few words.
excellent work!!
i'll fill in the missing pieces
i have 1 problem though.
i am using 4.7.1 and i can only seem to set colors for the keywords 1-6
i can't set a color for keywords 7 & 8 in the list you sent me
excellent work!!
i'll fill in the missing pieces
i have 1 problem though.
i am using 4.7.1 and i can only seem to set colors for the keywords 1-6
i can't set a color for keywords 7 & 8 in the list you sent me
You're right, I was a little too fast there. I have uploaded it again after rearranging a little.
Btw: I guess TagZ may be redundant as they will always (?) be inside quotes and be treated as strings, but I left them there.
i'm doing some rearranging too
i might rename mine so we can have two alternative highlighting methods
thanks for pasting in all the reserved words
EDIT:
i'm having lots of fun trying to code the ultra progressbar
should have a test version with usage guide ready soon
Isn't it possible to access the two last values of a 'srcoff'? Like '9' and '15' below
list srcoff int { 318 2 9 15 }
I want to use them to set Width and Height...
Isn't it possible to access the two last values of a 'srcoff'? Like '9' and '15' below
list srcoff int { 318 2 9 15 }
I want to use them to set Width and Height...
srcoff stands for 'source offset' and is only 2 values
list srcoff int { srcX srcY }
width & height are set in the rect
or else you can use the old 1.0 method of setting dimensions
int x 1
int y 2
int width 20
int height 30
int srcX 150
int srcY 100
@tk32: Thanks, I don't know when I started doing that stupid thing, but I remember that I didn't do it when I first started playing with LUA. I have kind of been consistently setting height and width two times for each sprite.
I'm starting to enjoy this now, but I still have a long way to go.
@tk32: Thanks, I don't know when I started doing that stupid thing, but I remember that I didn't do it when I first started playing with LUA. I have kind of been consistently setting height and width two times for each sprite.
I'm starting to enjoy this now, but I still have a long way to go.
scripting is extremely fun
just the right level of simplcity & challenging logic problem-solving
filling in the values for rects & srcoff can be very dull though
here's Mark I of my super progress bar:
tk32_progBar_Mk1.ski (http://www.btinternet.com/~sean.m.kelly/tk32_progBar_Mk1.ski)[span style='font-size:8pt;line-height:100%']
(note: this is not a skin, only a script)[/span]
EDIT:
3rd UPDATE - changed onupdate()
improved the update algorithm:
function onupdate(this)
if sliding == true and not fb2k_isStopped() then
followCursor(this)
elseif fb2k_isPlaying() then
setBarPercent(this, getTimePercent(this))
end
end
---
many features still not added, but it's very stable so far
it's the first progress script to work with or without a grip
current features:- works with a graphical progress bar, a color/gradient filled bar, or an invisible one [span style='font-size:8pt;line-height:100%'](if you want just the grip to show)[/span]
- grips are optional, and the script will adjust to work the same with or without one
- very accurate progress slide control
- if you use a grip, you don't have to grab the grip to adjust it (like in danZ script), a click anywhere in the area will make the grip & bar instantly jump to that time
- use quick left clicks to quickly jump from A to B
next features to be added:- right-mouse button 'scan' mode (as featured in the micropanel skin)
- ability to switch to vertical mode
- toggle between slide/grow mode when using graphics for the bar
---
you can either copy & paste into your skins, or else place it in the foo_looks dir and import it when you want to use it
usage instructions contained in the file
i hope the text instructions make sense to everybody
if not, let me know
filling in the values for rects & srcoff can be very dull though
This is the part I've been working on. I made a lua script that places buttons relatively to each other. It worked fine with my playback buttons, but not with my playlist entries. They look like they used to, but I can only double click to play the first track, the others doesn't react anymore. I think all my playlist code is from your "micropanel". Do you have any idea what can cause such behaviour?
Is there a way to script a look to be activated (brought to front) together with fb2k?
Is there a way to script a look to be activated (brought to front) together with fb2k?
possibly
although it would have to keep checking fb2k status 15 times per second
this is not very efficient
let's see if danZ can think of a better solution
---
Updated my uber progress bar script (http://www.hydrogenaudio.org/forums/index.php?showtopic=17279&view=findpost&p=182860)
Heh, the sets and gets, and the prev stuff is mine. So are the isPlaying and isStopped functions Just getting the credit I deserve.
*bows*
Is there a way to script a look to be activated (brought to front) together with fb2k?
There are no main UI callbacks/notifications of any kind to speak of in the foobar SDK so the only option is as tk32 suggested - to poll the main UI window status and then bringing the look window to the top. You could do this in
function onupdateplayerstatus(this)
which is only called twice per second or use onupdate() but only check 1 time per second (every 15th call).
Heh, the sets and gets, and the prev stuff is mine. So are the isPlaying and isStopped functions Just getting the credit I deserve.
*bows*
yes
sorry DocUK
i did get some great ideas from your work
.. as we all do from each other
i'll credit you in the comments
danZ, I think it's time for a proper look selection tool in the Preferences dialog.
You could have the look fetch the information from the lookinfo section, maybe add a string to the section, so authors could add a screenshot to their looks which could be shown in the look browser/selection tool.
Also, how about using zlib to have each look in just one file. I also think the whole primary, secondary, swap interface isn't very intuitive, and I could probably come up with some suggestions for this as well.
You rule
Is there a way to script a look to be activated (brought to front) together with fb2k?
There are no main UI callbacks/notifications of any kind to speak of in the foobar SDK so the only option is as tk32 suggested - to poll the main UI window status and then bringing the look window to the top. You could do this in
function onupdateplayerstatus(this)
which is only called twice per second or use onupdate() but only check 1 time per second (every 15th call).
by using a little hack, you can delay onupdate by any degree
lua slowUpdate
count = 0
delay = 5
function onupdate(this)
if count == delay then
..insert code here...
count = 0
else
count = count + 1
end
end
endlua
set the value of delay to the number of frames to wait before updating
examples of delay:0 = 15 times per second
4 = 3 times per second
14 = 1 time per second
29 = once every 2 seconds
danZ, I think it's time for a proper look selection tool in the Preferences dialog.
You could have the look fetch the information from the lookinfo section, maybe add a string to the section, so authors could add a screenshot to their looks which could be shown in the look browser/selection tool.
Also, how about using zlib to have each look in just one file. I also think the whole primary, secondary, swap interface isn't very intuitive, and I could probably come up with some suggestions for this as well.
You rule
Ah, good to know I have project manager - now if I just had some more programmers on my staff
All kidding aside, all of these things have been planned and discussed for quite some time and it is just a matter of me having time to work on it (I have to hold a real job to support my foobar habits...)
I've always intended to have a visual look browser and that is why "section lookinfo" has been around since v 0.1 of the software. It would be easy enough to add "string screenshot " etc. into there and make the browser more robust.
.zip, .rar, etc. support has been on the wish/to do list for a long time.
The primary/seconday and swap feature doesn't really even make sense anymore since it was primarily added to allow swapping between two related looks, say a big version and small version of the same look. With lua support this is no longer needed since the looks can dynamically change as needed. I'm in favor of removing all of this legacy stuff.
There are a lot of things that can still be added and as long as it remains fun and people remain interested in it I'll keep working on it.
danZ, I think it's time for a proper look selection tool in the Preferences dialog.
You could have the look fetch the information from the lookinfo section, maybe add a string to the section, so authors could add a screenshot to their looks which could be shown in the look browser/selection tool.
Also, how about using zlib to have each look in just one file. I also think the whole primary, secondary, swap interface isn't very intuitive, and I could probably come up with some suggestions for this as well.
You rule
it's ironic
because i was just about to say it was time for danZ to take a break
we've reached a stage where there is much depth and scope for skin development already - there is no need to continue pressing the lone developer for aesthetic changes to the preferences page etc..
if we find bugs that prevent our skins from working, then let danZ know - but otherwise, i think it's time he was allowed a little break
it's time the rest of us put some work into it, to show our appreciation
Concerning credits:
As the way to learn this is pretty much by looking at others peoples code, I think credits will be a problem no matter what.
If I should keep track of the origin of every bit of code, I doubt that I would be able to do anything but that. I'll try to give everyone (that I can remeber) credits in the end (when I release something).
Then to the mandatory question:
I don't really know how to ask it, but I'll try:
In what sequence is the code executed? Is timing, a problem? Can it turn into a "race" (the hardware word for it IIRC)?
Concerning credits:
As the way to learn this is pretty much by looking at others peoples code, I think credits will be a problem no matter what.
If I should keep track of the origin of every bit of code, I doubt that I would be able to do anything but that. I'll try to give everyone (that I can remeber) credits in the end (when I release something).
Then to the mandatory question:
I don't really know how to ask it, but I'll try:
In what sequence is the code executed? Is timing, a problem? Can it turn into a "race" (the hardware word for it IIRC)?
if i understand your question correctly
foo_looks is interpreted in a cascding fashion
sprites earlier in the ski are drawn before sprites further down in the code
as for the sprites themselves, they are drawn in the sequence set in their rendermap
changing the layer ('int layer') on a sprite will disrupt the flow. the sprites will be drawn in order according to their layers
as for the scripts, i think they are each interpreted when first attached
this is just guess work based on my experience coding skins - you'll need to wait for a reply from the creator for the definitive word
is this the sort of question you were asking??
----
btw, i don't ever expect to see credits to me in your looks - that isn't my aim
i just want you all to be comfortable in making great skins
everybody is welcome to use and modify any/all of my code, and even my graphics
danZ, I think it's time for a proper look selection tool in the Preferences dialog.
You could have the look fetch the information from the lookinfo section, maybe add a string to the section, so authors could add a screenshot to their looks which could be shown in the look browser/selection tool.
Also, how about using zlib to have each look in just one file. I also think the whole primary, secondary, swap interface isn't very intuitive, and I could probably come up with some suggestions for this as well.
You rule
Ah, good to know I have project manager - now if I just had some more programmers on my staff
All kidding aside, all of these things have been planned and discussed for quite some time and it is just a matter of me having time to work on it (I have to hold a real job to support my foobar habits...)
I've always intended to have a visual look browser and that is why "section lookinfo" has been around since v 0.1 of the software. It would be easy enough to add "string screenshot " etc. into there and make the browser more robust.
.zip, .rar, etc. support has been on the wish/to do list for a long time.
The primary/seconday and swap feature doesn't really even make sense anymore since it was primarily added to allow swapping between two related looks, say a big version and small version of the same look. With lua support this is no longer needed since the looks can dynamically change as needed. I'm in favor of removing all of this legacy stuff.
There are a lot of things that can still be added and as long as it remains fun and people remain interested in it I'll keep working on it.
If you really want it, I can help I'm a professional developer (games, web), years of C++ experience amongst others. I assume a resumé won't be needed, considering no payment is involved... I have an inkling that you'd rather work on foo_looks alone, however
Concerning credits:
As the way to learn this is pretty much by looking at others peoples code, I think credits will be a problem no matter what.
If I should keep track of the origin of every bit of code, I doubt that I would be able to do anything but that. I'll try to give everyone (that I can remeber) credits in the end (when I release something).
Then to the mandatory question:
I don't really know how to ask it, but I'll try:
In what sequence is the code executed? Is timing, a problem? Can it turn into a "race" (the hardware word for it IIRC)?
I think if someone gives you a lot of help with something or you make a derivative script/look from someone elses work then give them a little credit in the forum but I agree that we don't need to go crazy with this. Afterall the goal is to just make foo_looks and the looks as good as they can be and for people to enjoy making them.
Now, concerning timing.
Scripts are called on the sprites in the order of the sprite layering "int layer N" or look_setLayer(N). If you don't use either of those then all sprites are on the same layer and ordered as they appear in the .ski file. There is really no chance for a race condition but there is opportunity for infinite loops, recursions, etc. that would make foobar2000 hang or crash. Also, there are some cases where you can crash foobar by sending bad parameters to functions. I'll try to add more parameter checking as we go.
as for the scripts, i think they are each interpreted when first attached
is this the sort of question you were asking??
This is a good point.
The scripts are fully interpreted right after the .ski file is fully processes and all sprites have been created. Also, at this time is when "onattach()" is called and any global calls you have in a lua block will be executed. I checked the code and the sprite last has not been sorted yet based on the layering when this is done so the "onattach" calls will be in the order of the sprites in the .ski file.
From that point on functions are called "onupdate, onplaybackstop" on each sprite from the sorted (by layer) list.
function events such as "onmouseenter", etc. will be called as they occur on each sprite that the event applies to but again that subset will be ordered by layer.
I have an inkling that you'd rather work on foo_looks alone, however
As far as modifying and maintaining the code, yes, I'd prefer to do that alone.
If you'd like to contribute I'd suggest the following.
1. research zlib, rar, other and find one that is robust from the API side and from client side tools. We pretty much know the answer here already.
2. Wade though the source code, samples, etc. and find a good good C++ wrapper that would provide the functionality we'd need for foo_looks.
I'd like to be able to decompress directly to a memory block vs. a physical disk file so this will take additional research to figure out how to feed GDI+ the memory file since it primarily deals with disk files in its image APIs.
3. If a good wrapper doesn't exist, design one and create a sample application showing how to use it.
Once that is done then I could (if the C++ wrapper is well designed) just drop that into foo_looks.
I just started using Looks, and cant seem to figure out how to get the album art to be displayed. Could someone please let me in on this? I have a feeling it's something incredibly obvious.....
TIA
i'm trying to make an led toggle switch on my skin for always on top..
the sprites are working correctly, but i can't get the button to actually work..
(tk32 has probably already done what i'm trying to do since he's helping me out with my skin [thx tk _o/\_ ] but i'm trying to learn how to do stuff myself)
anyway here's what i have
sprite alwaysontopled
list rect int { 114 60 12 12 }
list srcoff int { 448 0 }
list statemap int { 3 0 1 1 3 2 2 2 2 3 }
list scripts string { "toggle[target=look_aot()]" }
(the toggle script is from micropanel_common.ski, i don't know if i used the right syntax for it..)
and i get this error when i click the toggle:
ERROR (foo_looks) : attempt to perform arithmetic on local `current' (a nil value)
a little help?
thanks,
bogs
edit: i also have a problem with my exit button.. i used the code from micropanel_common.ski on it as well..
sprite exitbutton
list rect int { 300 1 14 6 }
list srcoff int { 364 63 }
list statemap int { 0 1 2 2 0 0 1 2 2 0 }
// Causes Crash//list scripts string { "[function onleftbuttonup(this) fb2k_menuCommand('Foobar2000/Exit') end]" }
ideas?
i'm trying to make an led toggle switch on my skin for always on top..
the sprites are working correctly, but i can't get the button to actually work..
(tk32 has probably already done what i'm trying to do since he's helping me out with my skin [thx tk _o/\_ ] but i'm trying to learn how to do stuff myself)
anyway here's what i have
sprite alwaysontopled
list rect int { 114 60 12 12 }
list srcoff int { 448 0 }
list statemap int { 3 0 1 1 3 2 2 2 2 3 }
list scripts string { "toggle[target=look_aot()]" }
(the toggle script is from micropanel_common.ski, i don't know if i used the right syntax for it..)
and i get this error when i click the toggle:
ERROR (foo_looks) : attempt to perform arithmetic on local `current' (a nil value)
a little help?
thanks,
bogs
i havn't had a chance to do your toggle code yet, but i can tell you what you are doing wrong so far.
the 'customized' toggle script i wrote for micropanel allows you to set a
target that will be toggled [span style='font-size:8pt;line-height:100%'](instead of the sprite you are clicking)[/span]
this was something i found useful, and the benefit of it was that you could make a button in one area of the skin toggle something in another part of the skin.
a typical example would be a small button that toggles the time display from elapsed time to remaining time
an example of this would be like so:
sprite timeDisplay
list rect int { 54 80 102 22 }
string fspec "$ifgreater(%_istoggled%,0,-%rtm%,%etm%)"
sprite toggleButton
list rect int { 114 60 12 12 }
list srcoff int { 448 0 }
list scripts string { "toggle[target=timeDisplay]" }
[span style='font-size:8pt;line-height:100%']note:
%etm% = elapsed time in minutes
%rtm% = remaining time in minutes[/span]
if you leave the target as blank, like this:
list scripts string { "toggle[target=timeDisplay]" }
it will simply toggle the sprite you are clicking
---
unfortunately, you can't make the toggle script trigger a function [span style='font-size:8pt;line-height:100%'](
look_aot())[/span] by setting it as the target, although i can understand your logic.
to do this, you will need to write a little script called something like
toggleAOThope this has cleared a few things up
---
edit: as for the crash when using the menu command 'exit' - danZ is investigating it.
it's because of the changes made to the menus in 0.8 beta, and you'll notice that it also causes crashes in the micropanel skin.
I just started using Looks, and cant seem to figure out how to get the album art to be displayed. Could someone please let me in on this? I have a feeling it's something incredibly obvious.....
TIA
the easiest way to add album art is like this:
[span style='font-size:14pt;line-height:100%']1. [/span]import the foo_looks_common.ski scripts
import foo_looks_common.ski
[span style='font-size:14pt;line-height:100%']2. [/span]add an albumart sprite, and attach the
albumartDisplay script with default settings
sprite albumart
list rect int { 20 50 55 55 }
list scripts string { "albumartDisplay" }
now it will succesfully display the albumart, but only if the jpg is correctly named
[span style='font-size:14pt;line-height:100%']3. [/span]add these search patterns anywere in the .ski to use a more relaxed search method
string search1 "*front*"
string search2 "*cover*"
string search3 "*back*"
string search4 "*cd*"
string search5 "*"
let me know if this doesn't work, as i wrote this post from memory
@DocUK:
If you really want it, I can help I'm a professional developer (games, web), years of C++ experience amongst others.
Yes, we want and we need help, at least me. The release of the new foo_looks 2.x is a good moment for develop a new foobarlooks site, but I don't have time and knowledge enough for do it myself.
So help, please!
PD.- I always saw this web as a good reference: www.1001winampskins.com
New look available: Carbon (http://www.btinternet.com/%7Esean.m.kelly/carbon.rar) by DocUK
DocUK
Many thanks DocUK, I made a little modification of font, silkscreen looks good but lacks unicode support .
I can't figure out how to get rid of all decimals that is returned from
look_measureTextAbs(sprite).width
I want a number without decimals, would that mean turning it into an "int"?
Anyone?
I can't figure out how to get rid of all decimals that is returned from
look_measureTextAbs(sprite).width
I want a number without decimals, would that mean turning it into an "int"?
Anyone?
post that section of your code please
when coding my textscroll script, i rounded up to the next whole number
wholeNumber = ceil(1.2354364)
that results in 2
you can also use
floor() to round down
@tk32: Thanks, I'll try that.
Btw: Where can I find info about ceil(), floor() and all the other such things I don't know about? I know what ceil() and floor() do, but I don't know what is supported by foo_looks...
@tk32: Thanks, I'll try that.
Btw: Where can I find info about ceil(), floor() and all the other such things I don't know about? I know what ceil() and floor() do, but I don't know what is supported by foo_looks...
ceil & floor are part of the math library that is included with LUA
http://lua-users.org/wiki/TutorialDirectory (http://lua-users.org/wiki/TutorialDirectory)
here are some general tutorials [span style='font-size:8pt;line-height:100%'](check the math library tut for more like ceil & floor)[/span]
note that these tutorials are meant for LUA 5, whereas we use 4.0
however, most things work
---
i found a list of all the supported functions in lua 4.0 (although i can't find a list of definitions)
[span style='font-size:8pt;line-height:100%']arg, self, PI, _ALERT, _ERRORMESSAGE, _INPUT, _OUTPUT, _STDERR, _STDIN, _STDOUT, _VERSION, abs, acos, appendto, ascii, asin, assert, atan, atan2, call, ceil, clock, closefile, collectgarbage, copytagmethods, cos, date, debug, deg, dofile, dostring, error, execute, exit, exp, floor, flush, foreach, foreachi, foreachvar, format, frexp, gcinfo, getargs, getenv, getglobal, getinfo, getlocal, getn, gettagmethod, globals, gsub, ldexp, log, log10, max, min, mod, newtag, next, nextvar, openfile, print, rad, random, randomseed, rawget, rawgetglobal, rawgettable, rawset, rawsetglobal, rawsettable, read, readfrom, remove, rename, seek, setcallhook, setglobal, setlinehook, setlocal, setlocale, settag, settagmethod, sin, sort, sqrt, strbyte, strchar, strfind, strlen, strlower, strrep, strsub, strupper, tag, ,tan ,tinsert, tmpname, tonumber, tostring, tremove, type, write, writeto[/span]
i found a list of all the supported functions in lua 4.0 (although i can't find a list of definitions)
Reference manuals for all released versions of Lua can be found here: http://www.lua.org/manual/ (http://www.lua.org/manual/)
@tk32: Thanks, I'll try that.
Btw: Where can I find info about ceil(), floor() and all the other such things I don't know about? I know what ceil() and floor() do, but I don't know what is supported by foo_looks...
ceil & floor are part of the math library that is included with LUA
http://lua-users.org/wiki/TutorialDirectory (http://lua-users.org/wiki/TutorialDirectory)
here are some general tutorials [span style='font-size:8pt;line-height:100%'](check the math library tut for more like ceil & floor)[/span]
note that these tutorials are meant for LUA 5, whereas we use 4.0
however, most things work
---
i found a list of all the supported functions in lua 4.0 (although i can't find a list of definitions)
[span style='font-size:8pt;line-height:100%']arg, self, PI, _ALERT, _ERRORMESSAGE, _INPUT, _OUTPUT, _STDERR, _STDIN, _STDOUT, _VERSION, abs, acos, appendto, ascii, asin, assert, atan, atan2, call, ceil, clock, closefile, collectgarbage, copytagmethods, cos, date, debug, deg, dofile, dostring, error, execute, exit, exp, floor, flush, foreach, foreachi, foreachvar, format, frexp, gcinfo, getargs, getenv, getglobal, getinfo, getlocal, getn, gettagmethod, globals, gsub, ldexp, log, log10, max, min, mod, newtag, next, nextvar, openfile, print, rad, random, randomseed, rawget, rawgetglobal, rawgettable, rawset, rawsetglobal, rawsettable, read, readfrom, remove, rename, seek, setcallhook, setglobal, setlinehook, setlocal, setlocale, settag, settagmethod, sin, sort, sqrt, strbyte, strchar, strfind, strlen, strlower, strrep, strsub, strupper, tag, ,tan ,tinsert, tmpname, tonumber, tostring, tremove, type, write, writeto[/span]
Lua 4.0 Official Reference Manual (http://www.lua.org/manual/4.0/)
Chapter 4 for general language syntax (operators, structures, etc)
Chapter 6 for function reference (math, strings, etc)
New look available: Carbon (http://www.btinternet.com/%7Esean.m.kelly/carbon.rar) by DocUK
DocUK
Many thanks DocUK, I made a little modification of font, silkscreen looks good but lacks unicode support .
How many people speak Spanish anyways? I think we both know the answer is negligible
Font settings are all collected under globals for easy modification.
i've made a jumbo demo skin that demonstates:
- basic albumart support
- sliding panels
since both of these subjects have been raised by users recently
i also included a script called toggleMeta which is like the one i advised bogsnarth to attempt
NOTE:
this is not a proper skin - just a demonstration of some features that some users have been confused about.
--
i have a few challenges for you budding new designers that are of varying difficulty [span style='font-size:8pt;line-height:100%'](pick the one that seems most fun)[/span]:
easy- add some play buttons to the frame
- add a progress bar of some kind to the skin [span style='font-size:8pt;line-height:100%'](using existing code (http://www.hydrogenaudio.org/forums/index.php?showtopic=17279&view=findpost&p=182860) is not cheating)[/span]
medium- rewrite the slidePanel script to be reusable [span style='font-size:8pt;line-height:100%'](think about how you will tell the script the min/max Y values for the panel)[/span]
- add a new button and try making a different slidePanel script (slidePanel2?) that slides the panel when the user presses the new button [span style='font-size:8pt;line-height:100%'](you can use the same graphics as the button that's there already)[/span]
- after completing the above challenges, add another sliding panel that slides down from the top of the frame
hard- add playback buttons that slide into view on top of the sliding panel [span style='font-size:8pt;line-height:100%'](this will require big changes to the slidePanel script in order to get it to also slide the buttons. you will also need to think how to disable the buttons when they are out of view)[/span]
New look available: Carbon (http://www.btinternet.com/%7Esean.m.kelly/carbon.rar) by DocUK
DocUK
Many thanks DocUK, I made a little modification of font, silkscreen looks good but lacks unicode support .
where can i find the latest version?
thx docuk, i tried out ur skin b4 on foo looks 1 but it wasnt compatible so i switched to coal hehe
btw can u make it so that right click closes foobar2000 on the close button like in coal?
also is it possible for user to fix the crash problem with foobar2000 with the old gui if they still want to use the old skins?
also dockuk is there a way to make it display the amount of time its been playing instead of remaining time? whenever i load the skin it always starts displaying remaining time
Is there a way to script a look to be activated (brought to front) together with fb2k?
There are no main UI callbacks/notifications of any kind to speak of in the foobar SDK so the only option is as tk32 suggested - to poll the main UI window status and then bringing the look window to the top.
Thanks danZ & tk32. Beginning to understand foo_looks more now. However, I can't seem to find suitable functions to 1) poll the main UI window's status and 2) bring to look window to top.
For 1) the best I could find was fb2k_uiIsActivated(). This only detects if fb2k is minimised to tray or not. Are there any other related functions that will allow me to detect if the main window is in focus?
For 2) I could only use look_hide() to de-activate a look but not a look_show() or something similar to activate it?
Anyway, just like to mention that you guys are doing a great job with foo_looks. Really appreciate it
New look available: Carbon (http://www.btinternet.com/%7Esean.m.kelly/carbon.rar) by DocUK
DocUK
Many thanks DocUK, I made a little modification of font, silkscreen looks good but lacks unicode support .
where can i find the latest version?
thx docuk, i tried out ur skin b4 on foo looks 1 but it wasnt compatible so i switched to coal hehe
btw can u make it so that right click closes foobar2000 on the close button like in coal?
also is it possible for user to fix the crash problem with foobar2000 with the old gui if they still want to use the old skins?
also dockuk is there a way to make it display the amount of time its been playing instead of remaining time? whenever i load the skin it always starts displaying remaining time
Download the skin here (http://www.btinternet.com/%7Esean.m.kelly/carbon.rar).
It wasn't compatible? You probably didn't install the font correctly.
I will change it so left button causes it to close foobar2000, and right button just closes the look. I will post here when I release the new version.
To show playing time instead of remaining time, just click the time indicator - It toggles between the two
Finally, I don't understand what you mean by fixing crash problems? foo_looks version 1 should work just fine with foobar2000.
also is it possible for user to fix the crash problem with foobar2000 with the old gui if they still want to use the old skins?
old skins are not compatible with foo_looks 2.0
they have to be updated, like docuk has done with carbon, for them to work
Is there a way to script a look to be activated (brought to front) together with fb2k?
There are no main UI callbacks/notifications of any kind to speak of in the foobar SDK so the only option is as tk32 suggested - to poll the main UI window status and then bringing the look window to the top.
Thanks danZ & tk32. Beginning to understand foo_looks more now. However, I can't seem to find suitable functions to 1) poll the main UI window's status and 2) bring to look window to top.
For 1) the best I could find was fb2k_uiIsActivated(). This only detects if fb2k is minimised to tray or not. Are there any other related functions that will allow me to detect if the main window is in focus?
For 2) I could only use look_hide() to de-activate a look but not a look_show() or something similar to activate it?
Anyway, just like to mention that you guys are doing a great job with foo_looks. Really appreciate it
i think i discussed this with danZ before, and he said that PeterP didn't put any features into the API that told the plugin developers if the fb2k window was in focus or not
at the moment, we just have the bool you discovered:
fb2k_isUiActivatedperhaps there is something in the new 0.8 sdk that will help
you'll need to wait for a reply from danZ first though.
i think i discussed this with danZ before, and he said that PeterP didn't put any features into the API that told the plugin developers if the fb2k window was in focus or not
at the moment, we just have the bool you discovered: fb2k_isUiActivated
perhaps there is something in the new 0.8 sdk that will help
you'll need to wait for a reply from danZ first though.
Alright, actually fb2k_UIisActivated() works fine for the moment. But what about activating a hidden look? As mentioned, I can do a look_hide() to hide a look, but can't find a function to activate it.
---
Edit: You can disregard this question. I've found that it is more efficient to use look_setVisible(sprites,[true/false]), where sprites is an array of sprites I wish to show/hide.
I'm saying this because I've found that CPU usage remains high if I use look_hide() to 'un-activate' a look that uses the CPU intensively. However, if I use look_setVisible(sprites,[true/false]), the CPU usage actually decreases.
I tested by using 'sprite spectrum', which uses a considerable amount of CPU which can be monitored using Task Manager.
However, this only works if a look is 'Always on top'. If not, there is always the possibility that the look is hidden behind other windows. So my first question still remains (through this discussion, I got confused between showing a look and bring it to the top): is there a function to bring a look to the top?
If it interests you danZ, perhaps you might want to look into ignoring all drawing when a look is 'un-activated'; it doesn't seem efficient to use CPU cycles when a look is un-activated.
---
As an aside I've been looking at components such as the console window, and foosion's foo_vis_simple_spectrum (http://www.stud.uni-karlsruhe.de/~uzbs/fb2k/html/#simple_spectrum). These components's show/hide status seem to be tied to the main UI window somehow. Tried looking at foo_vis_simple_spectrum's source to see if a similar polling technique is done to achieve this effect, but my programming skills aren't good enough to answer my own question
As an aside I've been looking at components such as the console window, and foosion's foo_vis_simple_spectrum (http://www.stud.uni-karlsruhe.de/~uzbs/fb2k/html/#simple_spectrum). These components's show/hide status seem to be tied to the main UI window somehow. Tried looking at foo_vis_simple_spectrum's source to see if a similar polling technique is done to achieve this effect, but my programming skills aren't good enough to answer my own question
These are so called child windows of the main window, they are shown and hidden with the main window by the operating system.
To show playing time instead of remaining time, just click the time indicator - It toggles between the two
it shows the -2:30 as the default, i would like to change it so it shows 0:30 as the default
to tk32 wut im wondering is, is it possible for me to fix the playlist crash error that foo_looks 1.2 has with foobar2000 because there are some older skins that i would like to use
To show playing time instead of remaining time, just click the time indicator - It toggles between the two
it shows the -2:30 as the default, i would like to change it so it shows 0:30 as the default
just open carbon.ski in notepad, and change this part
sprite songtime
list rect int { 385 2 30 10 }
int halign align.Center
string fspec "$ifgreater(%_istoggled%,0,%et%,-%rt%)"
list scripts string { "toggle" }
swap place of
%et% &
-%rt%so it looks like this:
string fspec "$ifgreater(%_istoggled%,0,-%rt%,%et%)"
that will make elapsed time default
edit:
to tk32 wut im wondering is, is it possible for me to fix the playlist crash error that foo_looks 1.2 has with foobar2000 because there are some older skins that i would like to use
remind me about this crash - i thought 1.2 worked fine (maybe it's a 0.8 problem)
thx for the code
playlist_format_title_ex crash its fixed in foo looks 2.0 not in 1.2
To DANZ.
My suggest is:
1. In Looks preferences we must select only looks folder and main looks.
2. Change looks by command in tray - Looks/swap/submenu (list of all availables looks in selected folder).
To show playing time instead of remaining time, just click the time indicator - It toggles between the two
it shows the -2:30 as the default, i would like to change it so it shows 0:30 as the default
I will add a preset in the next version so the default mode can be changed easier.
thx for the code
playlist_format_title_ex crash its fixed in foo looks 2.0 not in 1.2
ok
my only advice is to use
foo_looks 1.05 for the old skins until somebody chooses to update them
1.05 didn't have any of the LUA present in 1.2 - and none of the old skins use LUA
so i guess no crashes either
when are we gonna get to see screenshots of all these lovely skins in development
EDIT:
if there is anything that is holding you back then let me know
i am happy to provide some graphics for anyone who isn't confident with graphics software
..or happy to provide large chunks of ski/lua code
btw, check your email bogsnarth
hey tk, thanks for the work you've done on my look
there are still some bugs i need to talk with you about.. i'll write you an email and give you all the gory details
thanks to your work, the skin is now getting close to a point where i can pass it along to others..
here's a screenshot (http://s95068188.onlinehome.us/img/bogslook-betascreenshot6.gif)
jealous of my leet music collection?
notes: - the play/pause button is blue because the mouse is hovering over it.. (i guess the mouse pointer disappears when making screenshots) normally it's black like the << and >> buttons..
- the volume knob has 15 positions (that ought to be enough for anyone's needs, and i'm simply not going through the process of making more positions ) and the little blue led on it changes brightness accordingly..[span style='font-size:8pt;line-height:100%'] (small bug here.. the skin seems to start with the volume knob w/o the led.. turning it up from this point puts the led in the first position, turning it down does nothing.. is this just a matter of foo looks not remembering settings?)[/span]
- the vis and time are toggle-able
- the arrow between the "hide look" and "exit fb2k" buttons is for a compact/winshade mode that i will design after this version is fully functional
(http://slskboard.savagenews.com/html/emoticons/geek.gif),
bogs
edit: changed pic to link to spare bandwidth
If it interests you danZ, perhaps you might want to look into ignoring all drawing when a look is 'un-activated'; it doesn't seem efficient to use CPU cycles when a look is un-activated.
Good point, I'll change it to ignore the vis data when the look is not active (hidden).
As far as I know though Windows should not be attempting to draw a hidden window and I don't need to ignore any drawing because their shouldn't be any drawing occuring.
bogsnarth
the rotational knob script you 'borrowed' from
hand orb is a prototype
it's not finished yet
but i think your problem of it starting without a light can be fixed
EDIT:
ignore my previous solution - don't set a
currentStepinstead change the
onattach function to this:
function onattach(this)
local rect = look_getRect(this)
local initSrcY = look_getSrcY(this) + (currentStep * rect.height)
look_setSrcY(this,initSrcY)
minY = -steps
maxY = steps - 1
end
i wrote the script assuming that the first 'state' was located at (0,0) since i was using a seperate graphic file for the knob positions
..alternatively, you could wait for me to update the script
i'll keep you informed of when i update it to be fully usable
awesome.. thanks
now the look starts with the LED in the left-most position.. but i can still turn it down one step which makes the led disappear.. :/
i'm not too worried about it though.. the knob's just for show until i get that code from you
bogsnarth, I saw you were asking for assistance in the foobar2000 channel on Freenode. I was not at the computer at 5am, but if you (or anyone else) need quick answers, feel free to query me there.
dockuk u done with modifying the skin yet?
dockuk u done with modifying the skin yet?
what did you want him to modify??
i might be able to help
for his skin, carbon i asked him to please make it so that the right click on the close button closes foobar and left click closes the look
for his skin, carbon i asked him to please make it so that the right click on the close button closes foobar and left click closes the look
ok, i'll let him do that
i don't want to start distributing unofficial versions of his skin
he might not like it
I only want to release new versions when significant changes have been made to the look, or after a while. Furthermore, if you absolutely crave new features, you can modify it yourself.
Also, I don't really want others releasing unofficial versions of the look.
as part of my everlasting mission to recruit new skin designers, i am providing yet another basic skin graphic in the hope of generating some interest
so far nobody has decided to take up my homework challenge for the albumart frame (http://www.hydrogenaudio.org/forums/index.php?showtopic=17279&view=findpost&p=183314) skin i posted a few days ago
this one is loosely based on the mac os interface - but i've kept it very simple to encourage you to use some thought of your own
NOTE:
these skins i am submitting are basic & under-developed for a reason - they are only meant to provide some inspiration for other people to go and add to them.
if i did too much work on design & polishing - there wouldn't be enough ways to make it your own!
[span style='font-size:8pt;line-height:100%']btw, nice rollover & press effects on the buttons[/span]
(http://www.btinternet.com/~sean.m.kelly/mac_attack_ss.png)
download here:
tk32-mac_attack.zip (http://www.btinternet.com/~sean.m.kelly/tk32-mac_attack.zip)
the zip file contains the png/ski combo, as well as the original .PSD file (with layers intact)
unfortunately - you will need Adobe Photoshop CS to open the PSD (sorry)
i actually did start working on the first "homework" project you posted, but i got distracted and forgot about it... so far all i've done is add a neat little progress/scroll bar beween the slide-up screen and the song info box.. i'll see if i can design and implement some playback control buttons for it.. then maybe i'll think about tackling one of the intermediate ones
i actually did start working on the first "homework" project you posted, but i got distracted and forgot about it... so far all i've done is add a neat little progress/scroll bar beween the slide-up screen and the song info box.. i'll see if i can design and implement some playback control buttons for it.. then maybe i'll think about tackling one of the intermediate ones
thanks for keeping the hope alive bogsnarth
any problems let me know
LUA scripting is great fun - trust me
docuk, is there anyway u can help me modify ur skin to include that feature? i really love ur skin but that missing feature is the only complaint i have against it,thx
excllent new albumart skin by desigrid
screenshot (http://www.hydrogenaudio.org/forums/index.php?act=Attach&type=post&id=185147)
download & more info here:
http://www.hydrogenaudio.org/forums/index....ndpost&p=185146 (http://www.hydrogenaudio.org/forums/index.php?showtopic=18792&view=findpost&p=185146)
docuk, is there anyway u can help me modify ur skin to include that feature? i really love ur skin but that missing feature is the only complaint i have against it,thx
Have some patience. I will release the skin when it is ready. YOu have told me numerous times that you want the feature, so shush.
as part of my everlasting mission to recruit new skin designers, i am providing yet another basic skin graphic in the hope of generating some interest
Just to show some interest I'll post a preview called "concept", as that's what it is. I decided to start coding and leave the eyecandy for later. It is a skin that is supposed to "hang" at the top of the screen. It features albumart and a slide down playlist. That's pretty much it for now. It currently looks like this:
normalEdit: forgot the link
nice.. i really like the long playlist.. how did you manage to slide out such a large panel? using tiles to draw the borders??
btw, just thought i'd point out i'm using your "dynamic" formatting string in the screenshot for my look (http://www.hydrogenaudio.org/forums/index.php?showtopic=17279&view=findpost&p=184017).. i meant to make note of it when i posted but i guess it slipped my mind..
excellent work UpNorth
it's great to have a creative mind like yours on the team - your common sense & innovative ideas are very refreshing
the skin is awesome - and i'll enjoy seeing it improve further bit by bit [span style='font-size:8pt;line-height:100%'](although i love it's current simplicity)[/span]
i'm loving the patchwork script. ingenious!
and i'm very impressed that you got relative positioning working
[span style='font-size:8pt;line-height:100%']btw, i did notice some 4-value srcoff's still in the code (playlist gfx section). tut tut![/span]
if there are any tasks you would like to delegate to me, then just ask. (however, don't be surprised if i start asking you for advice now)
i'll be glad to assist in any way
this is getting exciting now - thanks to URMEL/anza/bogsnarth/desigrid/UpNorth for sharing
It currently looks like this:
normal
(http://www.stud.ntnu.no/~mortek/foobar2000/concept/normal.png)
mouseover
(http://www.stud.ntnu.no/~mortek/foobar2000/concept/mouseover.png)
with playlist
(http://www.stud.ntnu.no/~mortek/foobar2000/concept/with-playlist.png)
I like it a lot! Keep up the good work.
Maybe a choice of colour schemes though? Purple isn't my flavor. Some nice blue or green would be awesome.
speaking of which
i was devising a plan to support colour schemes via colour overlays
this skin might be a good one to try it out on
---
alternatively, people could just open up the png in photoshop and colorize it to their favorite hue
i'll type up some instructions of the best way to do it if necessary
First of all thanks for all the positive feedback
@bogsnarth: I haven't looked into tiling yet. If you have a look at that png, you will see that the whole playlist is one piece. To make this possible I just modified danZ's sliding script slightly and added resizing of the window rect. I was alot easier than I feared at first (all the credit for making it easy goes to danZ).
i'm loving the patchwork script. ingenious!
and i'm very impressed that you got relative positioning working
The current patchwork script is pretty hardcoded. I hope I can make it more versatile and make scrolling possible too.
Concerning the relative positioning, I had big plans for it. I started out by making everything relative, and I worked, at least sort of. I think the main problem is that it's not very efficient to use it for everything, and the other problem I faced was timing. The latter might be because I don't have the full understanding of everything yet, but it was very frustrating. It's great for e.g. the text to the right of the albumart in my look though. And I might extent it like I planed to (the "figure" in my common file).
[span style='font-size:8pt;line-height:100%']btw, i did notice some 4-value srcoff's still in the code (playlist gfx section). tut tut![/span]
My trademark I feel like I was really underestimating danZ when I did that stupid mistake
if there are any tasks you would like to delegate to me, then just ask.
Further improvment of the progress bar would be nice. All the features from "micropanel" would be a nice addition. I don't see any reason to try to "reinvent the wheel", so if you like to improve the one you made, that I'm currently using, I would be happy to.
I'm hoping to be able to have a resizable playlist some time. One problem I'm aware of is to be able to add more lines to the playlist display dynamically. If it could just fill in lines in a given rect, with a given fontsize, it would be perfect. I don't know how easy that is to implement though. I have just thought about it and not tried anything.
(however, don't be surprised if i start asking you for advice now)
We're not there just yet
Btw: I like the idea of color overlays.
@DocUK: I guess purple is a little too girly. It just happend to turn out that way
It's just a few things I would like to do, before using time on the graphics again.
ok, until i get time to work on a
'code-based color-scheme switcher' i've made some alternative source graphics for UpNorth's excellent new '
concept' skin
(http://www.btinternet.com/~sean.m.kelly/color_chart.png)
concept_color_schemes.zip (http://www.btinternet.com/~sean.m.kelly/concept_color_schemes.zip)
[span style='font-size:8pt;line-height:100%']
Note to UpNorth: all i did was add a Hue/Saturation adjustment layer on top of everything and played with the Hue/Sat/Light levels[/span]
---
to use the custom schemes, download the zip file and extract any or all of the graphics to -
Foobar2000/Components/foo_looks/concept/to use a custom graphic, you will need to open the
concept.ski and change the image filename (very simple)
for example - to use color scheme 02, then you would need to use:
section globals
string image "concept/concept_02.png"
....etc...
[span style='font-size:8pt;line-height:100%']Note: you may need to change some of the purple text colors to get the best results[/span]
enjoy
---
EDIT: LOL - i totally forgot about the purple filled text display when the mouse leaves the skin! guess this makes my graphics kind of useless
eg:
(http://www.btinternet.com/~sean.m.kelly/fuck_up.png)
perhaps i can get UpNorth to use part of the graphics as a background instead of filling it with the default purple color. that would solve it.sorry for wasting your time guys - i'll get on to a
code-based color scheme switcher right away.
let this be a lesson to you all... shortcuts & hacks don't always pay off!!
---
one last tip:http://www.freephile.com/js/colorpicker/ (http://www.freephile.com/js/colorpicker/)
use this online javascript color picker when choosing RGB colors for your skins.
it works just like the one in Photoshop, but doesn't require you to load the rest of that huge piece of software.
i've updated my progBar script as requested
[span style='font-size:14pt;line-height:100%']tk32_progBar.ski (http://www.btinternet.com/~sean.m.kelly/tk32_progBar.ski)[/span]
[span style='font-size:8pt;line-height:100%']
(note: i dropped the Mk1 bullshit)[/span]
it now supports '
right-click scanning' [span style='font-size:8pt;line-height:100%'](as featured in micropanel)[/span]:
- right-click anywhere in the progress bar, and the track will scan in 2% increments until it reaches the cursor position
- if you wish, continue pressing the RMB and drag left/right to scan in that direction
- tap the RMB for short burst increments of 2-4%
for more info, read the original post (http://www.hydrogenaudio.org/forums/index.php?showtopic=17279&view=findpost&p=182860)
the only change i may decide to make to this feature is to code a better increment calculator [span style='font-size:8pt;line-height:100%'](for example, one that changes depending on distance from the cursor)[/span] but this will be transparent to users & developers, so don;t worry.
to use the script in your own skins, open the ski and read the install guide at the beginning. here is a transcript:
---
usage guide:[span style='font-size:8pt;line-height:100%']first of all, make sure you have correctly saved the file into your skin folder.
then start by importing the script into your current skin project using the following import command:[/span]
import tk32_progBar.ski
[span style='font-size:8pt;line-height:100%']to attach the script properly, you will need a total of 2 sprites (3 if you want a grip)[/span]
Step 1.[span style='font-size:8pt;line-height:100%']the first sprite is the visible 'bar', or 'fill', of the progress bar.
it can be a graphic, a fill, or even invisible (if you only want the grip to show).
important notes: - this sprite never recieves mouse input (so we use 'bool enabled false')
- the width of this sprite should be set to 0 (the script will update the width automatically)
here is an example:[/span]
sprite progBar
bool enabled false
list rect int { 10 60 0 22 }
list rendermap int { render.fill }
list fillcolor int { 150 150 150 150 }
[span style='font-size:8pt;line-height:100%']
notes:to use a graphical progbar, you need to do 2 additional things:
- change the rendermap to
render.image- add the
srcoff coordinates[/span]
Step 2.[span style='font-size:8pt;line-height:100%']the second sprite will be an invisible outline of whole width of the bar, and will be the part that receives clicks & movement from the mouse. so our script will be attached to this sprite.
important notes: - this sprite will be invisible
- this sprite have a set width of the entire progress bar
- the script will be attached to this sprite
- we can include the previous sprite to save us repeating some values
- when attaching the script, we must tell it the name of our 'bar' sprite (as above)
here is my sprite as an example (i've chosen to use an added gray border):[/span]
sprite progBox
string include progBar
int width 216
list rendermap int { render.border }
int borderwidth 1
list bordercolor int { 150 150 150 150 }
list scripts string { "tk32_progBar[bar=progBar]" }
Step 3.[span style='font-size:8pt;line-height:100%']to add a grip, simply add a basic grip sprite like this:[/span]
sprite progGrip
bool enabled false
list rect int { 10 60 38 22 }
list srcoff int { 12 217 }
[span style='font-size:8pt;line-height:100%'](note that this sprite is disabled too, since we don't want it to receive mouse commands)
lastly, we need to change the script arguments in the 'box' sprite (step 2) so that it looks like this:[/span]
list scripts string { "tk32_progBar[bar=progBar grip=progGrip]" }
---
please let me know if you have any problems or find any bugs
email: ()
@tk32: Nice work! No reason for me to get into progress bar coding when you do such a good job
How about you do "the same thing" for the playlist? I already use your playlist script, but if it could be imported and "operated" without touching the code, it would be even better IMHO.
Something like this:
list scripts string { "playlist[pln = { ple_1, ple_2, ple_3, ple_4 }]" }
If so, I have some ideas:
-Stop scrolling after the last track in playlist.
-If another tab is selected and it has fewer tracks than the previous, scroll to make the last tracks visible (fill playlist) if outside the range of tracks in the new tab.
-Fix this small bug: If you highlight the track being played and then a different one, the playing track tends to remain hightlighted untill you scroll.
@tk32: Nice work! No reason for me to get into progress bar coding when you do such a good job
How about you do "the same thing" for the playlist? I already use your playlist script, but if it could be imported and "operated" without touching the code, it would be even better IMHO.
Something like this:
list scripts string { "playlist[pln = { ple_1, ple_2, ple_3, ple_4 }]" }
If so, I have some ideas:
-Stop scrolling after the last track in playlist.
-If another tab is selected and it has fewer tracks than the previous, scroll to make the last tracks visible (fill playlist) if outside the range of tracks in the new tab.
-Fix this small bug: If you highlight the track being played and then a different one, the playing track tends to remain hightlighted untill you scroll.
The playlist script is actually something I threw together for the default look (which is looking pretty crappy these days compared to all the new stuff). tk32 used that in his look and now you've used it in yours. If tk32 is up for it I'd suggest the same thing - split it out into its own import file and make it more robust. At the time it was mostly just a proof of concept that a playlist could be scripted so I'm sure there is lots of room for improvement.
The improvements you suggested would be pretty easy I just didn't tackle them when doing the default look because of other priorities.
i've been procrastinating working on the playlist script for a long time
since it woked 'ok' i always found more exciting tasks
but it's definitely time to make it neater & easier to use & customize
i'll make a start tonight
i am currently working on the following scripts:
- improved playlist
- playlist scrollbar
- color scheme switcher*
- impoved volume slider
- rotational volume
- rotational jog dial
[span style='font-size:8pt;line-height:100%']*might be skin specific[/span]
i will make them all as modular as possible, and include little guides on how to use them in your prjects [span style='font-size:8pt;line-height:100%'](just as i did with the progBar)[/span]
please let me know if you have any suggestions on how you would like these to function, or suggest more scripts you would like to see.
as soon as i have a couple of them done, i'll start collecting all the excellent scripts that have been submitted to the foo_looks community by developers so far
---
my goal is to create a list of totally modular scripts that can be imported into any skin project and provide expert features to skin designers at every level of experience.
[span style='font-size:14pt;line-height:100%']examples of non-standard scripts submitted so far are:[/span]
[span style='font-size:8pt;line-height:100%'](i hope danZ doesn't mind, i've classed his set of scripts as 'standard')[/span]
progBar by tk32
[span style='font-size:8pt;line-height:100%']- my attempt at a universal progress bar that does everything that the progress bars in other mp3 players can do (and a little extra too)[/span]
textScroll by tk32
[span style='font-size:8pt;line-height:100%']- still in it's infancy, and still rather awkward to implement. i am currently thinking how to improve this one. it uses a layer mask to apply super-smooth left/right text scroll. it currently only works on rectangle skins though. (see micropanel for example)[/span]
Patchwork by UpNorth
[span style='font-size:8pt;line-height:100%']- UpNorth's impressive string concatenation script that attempts to work around the current single color/formatting restrictions of text sprites[/span]
followFB2K by desigrid
[span style='font-size:8pt;line-height:100%']- a neat way of hiding the skin when fb2k is minimized, and showing the skin when it is activated.[/span]
this is just a small example. sorry if i forgot anyone.
there are many more scripts like this available to use that do more simple tasks. you'll see them all when i create the list.
there are also more great submitted scripts, but are not yet truly modular, so i have deferred listing them until they are less skin-specific.
i'll compile the full list soon.
Did I mention you have a good taste in music?
Did I mention you have a good taste in music?
me?
just a quick note to say i've started work on coding 'Graviton'
here's the first prototype
(http://www.btinternet.com/~sean.m.kelly/graviton_test_ss.png)
i'll upload an early version for you to try out tomorrow
Lame idea, support for compositing RGBA images onto the final bitmap AFTER the alpha pre-scaling, to support additive transparency. (For example, the glowing effects around the outside of the above prototype.)
Sure, maybe a bit pointless, but just another step for flashiness, heheheh.
ok
as promised, i have a
'very' early version of
Graviton available to test
[span style='font-size:14pt;line-height:100%']tk32-graviton.zip (http://www.btinternet.com/~sean.m.kelly/tk32-graviton.zip)[/span]
it's only about 30% completed so far - so please don't expect too much. and the the scripts are very dirty & messy right now.
here's a list of the most obvious
missing features:
- progress bar
- text scroll
- volume control
- mini (win shade) mode
- shuffle/repeat
expect the skin to refine in the next week
btw, i am happy to hear any code recommendations, but unfortunately i can't accept any graphical recommendations - since i am coding this based on a friend's design. [span style='font-size:8pt;line-height:100%'](although the 'in development' sign is my own little addition )[/span]
enjoy
tk32
[span style='font-size:14pt;line-height:100%']See through CoverArt[/span]
yes, another one cover art...
screen shoot (http://pelit.koillismaa.fi/fb2k/screenshots/fb2k_15_22.png)
- Transparency when mouse isn't over
- when foobar is minimized , albumart is minimized too (use desigrid script): very important, set look always on top AND foobar minimize in the system tray (preferences/display/defaut user interface/system tray)
- very simple to change size cover, only modify one number:
int width 200
here for 200X200 size, please copy, paste and save as See_through_CoverArt.ski
cover text (http://pelit.koillismaa.fi/fb2k/readme.php?f=22&fid=98&t=2)
Now we just need drop down visualizations added to some skins, since we have the WinAMP plug-in...
just a quick note to say i've started work on coding 'Graviton'
here's the first prototype
i'll upload an early version for you to try out tomorrow
I can't wait till the finished version, its so cool looking.
Greatjob!
ok
as promised, i have a 'very' early version of Graviton available to test
[span style='font-size:14pt;line-height:100%']tk32-graviton.zip (http://www.btinternet.com/~sean.m.kelly/tk32-graviton.zip)[/span]
it's only about 30% completed so far - so please don't expect too much. and the the scripts are very dirty & messy right now.
here's a list of the most obvious missing features:- progress bar
- text scroll
- volume control
- mini (win shade) mode
- shuffle/repeat
expect the skin to refine in the next week
btw, i am happy to hear any code recommendations, but unfortunately i can't accept any graphical recommendations - since i am coding this based on a friend's design. [span style='font-size:8pt;line-height:100%'](although the 'in development' sign is my own little addition )[/span]
enjoy
tk32
[CODE]
ok
as promised, i have a
'very' early version of
Graviton available to test
Lame idea, support for compositing RGBA images onto the final bitmap AFTER the alpha pre-scaling, to support additive transparency. (For example, the glowing effects around the outside of the above prototype.)
Sure, maybe a bit pointless, but just another step for flashiness, heheheh.
Hey kode54,
I'm not sure I follow. I composite the whole buffer with alphablending support between layers and then hand off the final composited pixel data to the layered window API.
Can you elaborate on what you were suggesting.
BTW, thanks again for helping me get the layered window stuff working - it has really increased the coolness factor of the looks.
skandal
i think something went wrong with your post
My foolook always showed up like below for some reason. (WinXP) Is this a bug?
(http://wam.umd.edu/~yiu/foolook.png)
My foolook always showed up like below for some reason. (WinXP) Is this a bug?
(http://wam.umd.edu/~yiu/foolook.png)
I have the same problem...
we have been given kind permission, by SacRat, to port the AstAmp skin used in astonshell (http://www.astonshell.com).
i've not been able to find out who the original artist was - but SacRat has told me we are free to use the graphics.
(http://www.astonshell.com/skins/plugins/p/astamp.jpg)
[span style='font-size:8pt;line-height:100%'](the real skin is about 2x this size)[/span]
AstAmp.zip (http://www.btinternet.com/~sean.m.kelly/AstAmp.zip)
i'll get around to coding it eventually, but i'm a little busy with Graviton.
so if anyone would like to try to make a start and get as much done as they are able then i would greatly appreciate it
[span style='font-size:8pt;line-height:100%'](anything you are not able to code i will add later on)[/span]
My foolook always showed up like below for some reason. (WinXP) Is this a bug?
(http://wam.umd.edu/~yiu/foolook.png)
I have some debug code in foo_looks that shows which region of the look is being redrawn by filling in the invalid region with a random color. I used this to make sure my minimal redraw optimization was working. This is only supposed to draw like this if you press and hold F9. I have no idea why it would be doing it all the time. Try pressing F9 and see if anything changes.
My foolook always showed up like below for some reason. (WinXP) Is this a bug?
My foolook always showed up like below for some reason. (WinXP) Is this a bug?
(http://)
I have some debug code in foo_looks that shows which region of the look is being redrawn by filling in the invalid region with a random color. I used this to make sure my minimal redraw optimization was working. This is only supposed to draw like this if you press and hold F9. I have no idea why it would be doing it all the time. Try pressing F9 and see if anything changes.
No, pressing F9 doesn"t do anything, still showing an empty colour-box....
Hum, I don't really know what could cause this - do you have F9 assigned as a hot key in foobar or any other program? What happens if you open another look? Just grasping for ideas.
I'll remove this code in the next release and leave it only in my debug builds.
Sorry for the trouble.
you could also try reinstalling GDI+ & making a copy of the gdi.dll in the foobar dir
i saw a problem like this before - it was because the user had previously installed some windows shell replacement (styleXP?), and it screwed around with things
he said it looked this this:
(http://www.btinternet.com/~sean.m.kelly/foolooks_problem.png)
it was fixable though. and not the fault of foo_looks
quick note..
i updated Graviton & added my first attempt at the slightly complicated volume bar script
(http://www.btinternet.com/~sean.m.kelly/graviton_vol.png)
tk32-graviton.zip (http://www.btinternet.com/~sean.m.kelly/tk32-graviton.zip)
the textscroll & progress bar are still to be implemented, as is the winshade mode
feedback on using the volume bar would be appreciated though - let me know how i can improve it
the most important question is..
'shall i keep it as a sliding bar, or should i only allow the L.E.D's to fully be on/off. if i adjust the code to work based on the lights it will restrict the control of the volume to only 11 different positions [span style='font-size:8pt;line-height:100%'](each LED marks ~9%)[/span]. what do you think?'
[span style='font-size:8pt;line-height:100%']p.s. don't try to use any of my code in your own skins, as it is very experimental & bound to be drastically improved with each update[/span]
quick note..
i updated Graviton & added my first attempt at the slightly complicated volume bar script
(http://www.btinternet.com/~sean.m.kelly/graviton_vol.png)
tk32-graviton.zip (http://www.btinternet.com/~sean.m.kelly/tk32-graviton.zip)
the textscroll & progress bar are still to be implemented, as is the winshade mode
feedback on using the volume bar would be appreciated though - let me know how i can improve it
the most important question is..
'shall i keep it as a sliding bar, or should i only allow the L.E.D's to fully be on/off. if i adjust the code to work based on the lights it will restrict the control of the volume to only 11 different positions [span style='font-size:8pt;line-height:100%'](each LED marks ~9%)[/span]. what do you think?'
[span style='font-size:8pt;line-height:100%']p.s. don't try to use any of my code in your own skins, as it is very experimental & bound to be drastically improved with each update[/span]
You might consider to keep it as a drag but only turn on whole LED graphics. That is, the led would only come on after the threshold for the LED was met. So, some minor volume changes might not show up visually unless the volume changes enough to turn on/off a whole LED.
So set the width of the lED display sprite on fixed increments only and use the 9% threshold deciding when to turn one on/off.
Just and idea. Looks awesome overall.
the most important question is..
'shall i keep it as a sliding bar, or should i only allow the L.E.D's to fully be on/off. if i adjust the code to work based on the lights it will restrict the control of the volume to only 11 different positions [span style='font-size:8pt;line-height:100%'](each LED marks ~9%)[/span]. what do you think?'
Half filled leds doesn't look good to me. How about you keep the slider as is, but make the leds turn on for every 9%? Is that an option?
Btw: I don't use the volume dsp, so it won't matter to me anyway.
Edit: Seems like my idea wasn't that original
I agree with danZ and upNorth about the half-filled/fully-filled LED. Like them, I think the slider should remain, as it's rather intuitive for most people to slide their mouse across volume controls.
Another thing I would personally prefer would be that the lighted up rollover LED (the brightest) follows the mouse. Currently, if you mouseover a particular LED, clicked, and slide, the first-clicked LED remains lighted up. I tried to see if this behaviour could be changed by making changes to core_led1's statemap, but it didn't seem to work.
Overall, great job with the look! Very impressed
thanks for the comments
it seems the statemap get's stuck in press mode while i'm dragging
i might try to remove the statemap altogether and do that part using onmouseenter/leave
i'll start work on making full LED changes tonight
thanks
thanks for the comments
it seems the statemap get's stuck in press mode while i'm dragging
i might try to remove the statemap altogether and do that part using onmouseenter/leave
i'll start work on making full LED changes tonight
thanks
Yes, while the mouse is down after pressing a sprite the mousestates are frozen as the clicked sprite has "captured" the input.
Doing custom handling of the graphics is probably the only way. Or did you try setting the press statemap graphic to the same offset as the normal state???
My foolook always showed up like below for some reason. (WinXP) Is this a bug?
actually that worked (press and hold F9)...wow
also, seems like you have to do that again when running some other programs. Probably not due to gdiplus.dll since foobar2k seems to be the only program using it.
ok, i'm about 70% done with the new volume control method
but it was a pain in the a$$!!
i coded it to only change after a set intertval, and then realised that the L.E.D's are not uniformally positioned - stupid me!
so i had to hard-code the L.E.D. intervals into the script
for anyone who is interested, here is how i dealt with the problem....
intervals = { 12, 14, 16, 17, 17, 17, 17, 16, 14, 12, 26 }
function calculateSteps(offsetx,totalsteps)
local aggregate = 0
local index = 0
repeat
index = index + 1
aggregate = aggregate + intervals[index]
until aggregate >= offsetx - 8 or index == totalsteps
return index
end
[span style='font-size:8pt;line-height:100%']
(i've edited the variable names to make it easier to understand)[/span]
this is how it works:description of variables-intervals - this is a list of the number of pixels from the start of each LED to the the next. so the first value of 12, means that there are 12 pixels between the start of the first LED, and the start of the second LED.
offsetx - this is the horizontal location of the mouse cursor, relative to the origin of the volume bar [span style='font-size:8pt;line-height:100%'](it is calculated by subtracting the x value of volume bar from the x value of the cursor position)[/span]
totalsteps - is the total number of steps allowed
description of function-the function works by adding the intervals together until the combined value is is approximately the same as the position of the mouse cursor.
when this happens, we know how many steps to move because it is the same number as our index variable [span style='font-size:8pt;line-height:100%'](which was increasing everytime we added another interval)[/span]
i apply the '
- 8' to the
until check simply to tweak the sensitivity, otherwise it's possible to light the next LED by clicking in the gray space before it.
anyway, at least it works
ok
it's been a late night for me... but i got the volume bar working almost perfectly
and the best thing is.. while the display is limited to 11 positions, the actual volume can be dragged to any value, and you are not restricted (as we suspected) to 9% increments
i hope after all this work it'll be possible
--
as before, any feedback appreciated
--
btw danZ, i tried to add a beep sound using look_playSound, but all i got was silence. have you tested the function?
Thanks for the good interface.. I really like this one...
BTW, an error shows up when I double-click to open an OGG file.
ERROR (foo_looks) : attempt to compare nil with number
It doesn't appear when the next file is played in order.
Thanks for the good interface.. I really like this one...
BTW, an error shows up when I double-click to open an OGG file.
ERROR (foo_looks) : attempt to compare nil with number
It doesn't appear when the next file is played in order.
i think this may be due to a little hack i asked danZ to code into the plugin
when fb2k stops a track, i asked danZ to set a flag based on the reason the track was stopped
and in Graviton i check to see the reason why fb2k stopped a track (mainly so that i can keep my play/pause button up to date)
the error is probably related.
do you get the same error using a different skin??
wait for danZ to reply for more information.
---
EDIT: i made a fix in the skin code
tk32_graviton_0.6.zip (http://www.btinternet.com/~sean.m.kelly/tk32_graviton_0.6.zip)
(bug fix)try this update and tell me if you get the same problem with OGG files
@tk32:
Your GravitonSkin looks great! But on songs with long titles or artists, it will not show the hole title/artist.
Big_Berny
@tk32:
Your GravitonSkin looks great! But on songs with long titles or artists, it will not show the hole title/artist.
Big_Berny
He's working on text scrolling but there are current design limitations that are making it hard for him to do. I may need some more modifications to the core renderer to make it work as desired.
Maybe the font size could be reduced until the scrolling works.
EDIT: i made a fix in the skin code
tk32_graviton_0.6.zip (bug fix)
try this update and tell me if you get the same problem with OGG files
It's working well now..
hi guys
just a quick answer to the problem of artist-title display
i am aware that the current text arrangement is not suitable for long tracknames.
the reason for this is because i am following the specific desires of the skin designer.
however, i have created a more suitable formatting scheme until i am able to complete the long-promised text-scroll
this is only a temporary change
the new format looks like this, and means you are much more likely to be able to read what is currently playing [span style='font-size:8pt;line-height:100%'](note: it is not perfect, and scroll will be better)[/span]:
(http://www.btinternet.com/~sean.m.kelly/alt-formatting.png)
tk32-graviton_0.7.zip (http://www.btinternet.com/~sean.m.kelly/tk32-graviton_0.7.zip)
enjoy.
more exciting updates coming very soon. watch this space!
Time to work on 0.8 specific bugs, now that the release is out.
May I suggest the problem with toggling foobar2000, to begin with:
lua togglefb2k
function onleftbuttonup(this)
if (fb2k_uiIsActivated()) then
fb2k_menuCommand("Foobar2000/Hide main window")
look_setToggle(this, 0)
else
fb2k_menuCommand("Foobar2000/Activate main window")
look_setToggle(this, 1)
end
end
endlua
Thanks, <3 danZ
doc, that doesn't look like a suggestion
just a finger pointing at erroneous code
It worked in 0.7, and danZ specifically said he would have a look at why these menu commands do not work in the new version of foobar2000, when 0.8 went final.
so uhh.....
is there going to be an update?
i just ask cause it's been three days since the last post...
I was away. Now I am back. I will have some free time to work on Looks in Summer 2005.
I was away. Now I am back. I will have some free time to work on Looks in Summer 2005.
ehehe
and i have some time to work on foo looks in summer 2006
joking - i'll post some more skin updates tonight
so uhh.....
is there going to be an update?
i just ask cause it's been three days since the last post...
Well, since my friend Aero got iPod (http://www.hydrogenaudio.org/forums/index.php?showtopic=19156&view=findpost&p=188776) support underway for 0.8 I now feel motivated to get upgraded. I've also made some small but useful additions to the scripting, etc. which tk32 has been working with. So, look for a 2.1 release that is built for 0.8 in the next week (unless I run into problems with the upgrade)
I was away. Now I am back. I will have some free time to work on Looks in Summer 2005.
well i've got nothing but free time, but i don't understand the scripting part of look-making very thoroughly yet.. and i haven't found a good resource for learning how (beyond tk32's intro tutorials, that is)..
so i'm waiting on the adaptable scripts from tk (volume, playlist, etc) and the bug fixes for 0.8 (things like crashing when using a button to call the Exit Foobar command, the "show/hide main window" problem) before i can go any farther with my two skins..
technical question: for the second look i'm doing i'm trying to make an instrument panel with a "lid" that you can open and close (for aethetical value) but i'm not sure how to go about writing it.. i know i'd have to have the background on layer 0, the toggles on layer 1 and the lid on layer 2.. and i know i need graphics for closed and open states.. can anybody give me a rough outline or example of the code i'll need to use?
thanks,
bogs
I was away. Now I am back. I will have some free time to work on Looks in Summer 2005.
well i've got nothing but free time, but i don't understand the scripting part of look-making very thoroughly yet.. and i haven't found a good resource for learning how (beyond tk32's intro tutorials, that is)..
so i'm waiting on the adaptable scripts from tk (volume, playlist, etc) and the bug fixes for 0.8 (things like crashing when using a button to call the Exit Foobar command, the "show/hide main window" problem) before i can go any farther with my two skins..
technical question: for the second look i'm doing i'm trying to make an instrument panel with a "lid" that you can open and close (for aethetical value) but i'm not sure how to go about writing it.. i know i'd have to have the background on layer 0, the toggles on layer 1 and the lid on layer 2.. and i know i need graphics for closed and open states.. can anybody give me a rough outline or example of the code i'll need to use?
thanks,
bogs
If you can post some images of what you want to implement tht would be helpful in getting you some pointers on how to create the scripts and graphics for the lid animation.
I'm nearly done with the 2.1 release which will be compiled for 0.8.
I didn't have to make too many changes but it looks like you just need to rename certain menu commands to match the new names.
For example
"foobar2000/Hide" instead of "foobar2000/Hide main window"
If commands aren't workng in your look then you probably need to go check the preferences and make sure the string you are using is still a valid menu name.
They added GUIDs for the menu commands which removes the dependency on a string name but I haven't found a satisfactory way to expose that to the scripts so I'm sticking with the strings for now.
What are the details of the crash on exit bug? I don't recall hearing about that one.
I should have 2.1 ready to go today sometime.
bogsnarth,
if you can give me an artist's impression of what it should look like 1. open & 2. closed then i will seperate the item into all the different sprites and tell you what you need to do.
just post a jpg or something of the basic idea (don't worry much about how it looks for now)
danz: thanks for the tip on checking the preferences.. i was aware of the list of commands but it never occured to me to use that list in my scripting.. :B
unfortunately, as per your instructions, i tried changing the main menu toggle to "foobar2000/hide" instead of "foobar2000/hide main window" and it still doesn't work.. i changed the activate switch to "system/activate" and it works to bring the window up, but it won't hide it again.. :/
this is the exit button crash i was talking about..
sprite exitbutton
list statemap int { 0 1 2 2 0 0 1 2 2 0 }
list rect int { 300 1 14 6 }
list srcoff int { 363 63 }
string tooltip "Exit Foobar2000"
// Causes Crash//list scripts string { "[function onleftbuttonup(this) fb2k_menuCommand('Foobar2000/Exit') end]" }
this is the info at the top of the crash report:
Illegal operation:
Code: C0000005h, flags: 00000000h, address: 00B9C565h
Access violation, operation: read, address: 00000004h
Call path:
WinMain=>app_shutdown
This is the first crash logged by this instance.
i tried chaging "Foobar2000/Exit" to "Foobar2000/Close" (since that's what the menu item is called in the Main Menu Items page of the prefs..) and instead of causing a crash, it did nothing..
i just tried it again using "exit" and got the same crash info.. it even says it's the first crash logged by this instance...
tk32:i'll post the graphics here as soon as i get the Open state finished.. might be later tonight but if i don't get to it, tomorrow..
unfortunately, as per your instructions, i tried changing the main menu toggle to "foobar2000/hide" instead of "foobar2000/hide main window" and it still doesn't work.. i changed the activate switch to "system/activate" and it works to bring the window up, but it won't hide it again.. :/
Try 'Foobar2000/Activate or hide main window'. I used that with tk32's fooAMP2 and it works.
thanks megadeus.. your idea didn't work, but it prompted me to try something so obvious that i completely overlooked it before..
i used "foobar2000/hide main window" to hide and "system/activate" to activate.. works perfectly now
i used "hide main window" previously and i didn't check it to see if it worked before i started editing earlier.. how silly of me
peace,
bogs
thanks megadeus.. your idea didn't work, but it prompted me to try something so obvious that i completely overlooked it before..
i used "foobar2000/hide main window" to hide and "system/activate" to activate.. works perfectly now
i used "hide main window" previously and i didn't check it to see if it worked before i started editing earlier.. how silly of me
peace,
bogs
That's right, if you're using the lua togglefb2k function like DocUK posted earlier, my suggestion won't work.
What I initially did to get fooAMP2 to open/close the main window with fb2k v0.8 was to get rid of that lua routine in the .ski and just use a fb2k_menuCommand('Foobar2000/Activate or hide main window'). It worked just fine.
I tried out your change and it does work now with the lua.
Cool. Thanks.
i am currently using this command to toggle the main playlist:
function onleftbuttonup(this)
fb2k_menuCommand("Foobar2000/Activate or hide")
end
Graviton update coming soon
fb2k_menuCommand("Foobar2000/Activate or hide")
I had to add "main window" after "hide" to make it work. (Like Megadeus wrote).
Maybe you could update fooAMP2 for 0.8
[span style='font-size:14pt;line-height:100%']
Version 2.1 Available (http://www.loodi.com/foo_looks.zip)[/span]
Changelog
1. Compiled with 0.8 SDK
2. Lua is now integrated into foo_looks and you can remove the lua dlls from the foobar folder
3. Removed "look swap" and all items associated with that functionality. No longer useful with scripting support
4. Per pixel alpha blending with the desktop. foo_looks is compatible with Win2K and WinXP only
5. new section window property
int blendflag valid values are
- blendflags.Opaque (use this if your look has no per pixel alpha for better speed)
- blendflags.Alpha (required if you want to blend to desktop)
6. new rendermap flag -
render.Erase used mostly for the background sprite in a look using per pixel blending to prevent "onion skin" effect
7. minor optimization to ignore spectrum data when look is not active
8. lua function change for mouse handlers - x.y passed to all mouse handlers. Note your current handlers still work since lua is very loose about parameter passing but you must include then in the parameter list if you wish to use them. These can be used in place of look_mouseX(), look_mouseY() in these handlers.
- function onleftbuttondown(this,x,y)
- function onmouseenter(this,x,y)
- etc.
9. new parameter passed to
function onplaybackstop(reason) values for reason are
- 0 - user
- 1 - end of file
- 2 - new track
10. organized Components/look menu and added "looks" popup menu
11. moved all default look assets to "foo_looks\Default" folder. You need to update your look if you are importing the foo_looks_common.ski file. Also you can delete the default look assets from the foo_looks folder from previous version
12. new lua functions
- void window_setAlpha(a) -- a is 0 to 100 - sets alpha for entire window regardless of per pixel settings and requires blendflags.Alpha
- image look_getImage(sprite)
- look_invalidate(sprite [spritelist])
- {a,r,g,b} image_getPixel(image,x,y)
- void image_setPixel(image,lookColor) -- performance issues
- int image_getWidth(image)
- int image_getHeight(image)
excellent work
just amending some of the new function details (getpixel was missing the x,y arguments):
- image look_getImage(sprite) [span style='font-size:8pt;line-height:100%']-- get the image used by sprite[/span]
- look_invalidate(sprite) [span style='font-size:8pt;line-height:100%']-- force redraw of sprite[/span]
- int image_getWidth(image)
- int image_getHeight(image)
- table{a,r,g,b} image_getPixel(image,x,y)
- void image_setPixel(image,x,y,look_color)[span style='font-size:8pt;line-height:100%']-- look color is packed format created with look_color() ie. look_color(255,0,0,0)[/span]
[span style='font-size:8pt;line-height:100%']
note: it is not advised to use setPixel yet, as it causes massive CPU consumption[/span]
i'll be using the new getpixel functions to make a custom drag-map for my graviton progress bar
more info coming soon..
edit:sorry danZ - i keep trying to be helpful and then stepping on your toes
excellent work
just need to correct one of the above functions. it's missing 2 arguments. should be:
image_getPixel(image,x,y)
i'll be using the new getpixel functions to make a custom drag-map for my graviton progress bar
more info coming soon..
Indeed. I updated the post - thx.
@danZ: I think it would be an improvement to change back to a standard layout for the preferences page. It might be "cool" looking, but IMHO it's not very user friendly. One annoying thing is if you first open "Current Looks" and then open and close "Overrides", the former will remain mostly out of view until you scroll. It's those little things that matters
@danZ: I think it would be an improvement to change back to a standard layout for the preferences page. It might be "cool" looking, but IMHO it's not very user friendly. One annoying thing is if you first open "Current Looks" and then open and close "Overrides", the former will remain mostly out of view until you scroll. It's those little things that matters
Prefs page has never gotten much attention as I'm always consumed with adding features to the actual look engine.
When I get time to spruce it up I'll get rid of the fancy control since I've had other complaints about it.
small problem with foo_look 2.1:
when foobar start, if focus isn't on the first playlist tab, foobar windows isn't correctly drawing at the top left.
if i miniminise foobar to system tray and reopen, windows is correct.
question: never more swap looks?
sorry for my poor english
regards , Melomane
small problem with foo_look 2.1:
when foobar start, if focus isn't on the first playlist tab, foobar windows isn't correctly drawing at the top left.
if i miniminise foobar to system tray and reopen, windows is correct.
question: never more swap looks?
sorry for my poor english
regards , Melomane
Not quite following on the drawing problem.
Regarding the swap looks it is not longer valueable with scripting.
If you simply want to "hot swap" between two looks then take a look at
Preferences->Core->Keyboard shortcuts
You will see an entry for each look in the current look folder and you can assign a hot key any of them.
Same strings can be executed in scripts if you want to make a button that "swaps" to another look.
ok, i have see shortcuts, thanks!
about drawing problem:
use playlist with multiples tabs, choose second or what you want tab but not the first.
look can be enable or not.
close foobar
open foobar
on my screen foobar window isn't correctly drawed on left top
perhaps i am the only one to having this problem
Not quite following on the drawing problem.
I experience this problem too. I don't think it is related to foo_looks though, but I haven't done anything to track down the cause.
The upper left corner (a square including menu and window title) is transparent/not drawn when I start foobar. I haven't bothered reporting it because I havent' had the time/motivation to remove all plugins, do a clean install and so on. As Melomane said a simple hide/show fixes it anyway. Sorry about the lack of "team spirit".
thanks upNorth, i haven't problems of video drivers!
I think it is related to foo_looks because the problem is appeared when i have upgraded to foolook1 to 2 ; i have tried to remove foolook2 and it solve problem.
I think it is related to foo_looks because the problem is appeared when i have upgraded to foolook1 to 2 ; i have tried to remove foolook2 and it solve problem.
That seems to have solved it for me too. I removed foo_looks and some other plugins (foo_columns, foo_dynamics and a few more) and the problem is gone.
Btw, foo_columns was not my active UI at the time the problem occurred.
hi danZ
is it possible that your foo_looks.ski skin remebers the layout i chose?
it always loads in Standard Layout.
hi danZ
is it possible that your foo_looks.ski skin remebers the layout i chose?
it always loads in Standard Layout.
Hi dano
remembering states/settings was classed as a b-list feature - so it was put on hold while more crucial things were coded
however, danZ still plans to add this kind of support
perhaps in version 2.2
--
[span style='font-size:8pt;line-height:100%']however, there is a way you can set the default appearance for the foo_looks.ski skin.
1. open the ski file in notepad and scroll down to line 54
2. this is where the default layout is set, it says:
int startLayout layouts.standard3. the choices are:
mini,
compact,
standard,
cover,
tvhope that helps.[/span]
thx tk32, that helps me
[span style='font-size:14pt;line-height:100%']Version 2.1 Available (http://www.loodi.com/foo_looks.zip)[/span]
shouldnt we be starting some new threat? to somebody like me, that needs to follow it, it is toooooooooooooooooooooo long ... 24 pages!
[span style='font-size:14pt;line-height:100%']Version 2.1 Available (http://www.loodi.com/foo_looks.zip)[/span]
shouldnt we be starting some new threat? to somebody like me, that needs to follow it, it is toooooooooooooooooooooo long ... 24 pages!
Sure I'll start one
[span style='font-size:14pt;line-height:100%']HERE (http://www.hydrogenaudio.org/forums/index.php?showtopic=19310&view=findpost&p=190492)[/span]Let this thread trickle down then.
Hi
I have wrote skin for foo_looks 2.1 and i do not know how I can share it.
I was on the Foo_looks 2.0 resource pages and no liknk find to share my skin.
There in gallery are not much skins and no link to fix it :| .. why ??.
I was on the page "foobarlooks.tk" and i find mail adres to send my skin. But on the page are only foo_looks 1. xx skins but i send e-mail.
This is my first post not in my language hehh ....
The thread for sharing skins, comments, and suggestions is here (http://www.hydrogenaudio.org/forums/index.php?act=ST&f=33&t=19310&view=getnewpost).
Thanks very much for contributing to the foo_looks community, and your English is not bad at all
Thank You DocUK. But I need simply answer. Is difficult to mi to read many pages in Eanglish I can't find the right post when I click Your link. Plece write for me this few words.
hi Hadda,
do you need webspace for your skin ? or do you want to announce you've made a skin for foo_looks users ? DocUK gave you a link to the thread where we all announce, discuss about foo_looks skins/looks : just add a reply at the end like you did here
and ... welcome ! i'm quite new to foo_looks skinning and english isn't my native language too
Ok I understand thank You .( I want to announce so i need a webspace too.)
http://www.btinternet.com/~sean.m.kelly/album_frame_ss.jpg (http://www.btinternet.com/~sean.m.kelly/album_frame_ss.jpg)
hah, nice choice in album :)
Learning to Be (http://www.u-cover.com/u-cover/template.php?data=u-cover015) by Sense for those wondering
http://www.btinternet.com/~sean.m.kelly/album_frame_ss.jpg (http://www.btinternet.com/~sean.m.kelly/album_frame_ss.jpg)
hah, nice choice in album
Learning to Be (http://www.u-cover.com/u-cover/template.php?data=u-cover015) by Sense for those wondering
kudos to you
New look:
Aero has updated his AeroAmp look which should work with any Winamp 2.X skin (provided you extract the assets from the zip file) with only slight modifications (fonts, colors, etc.).
AeroAmp (http://www.loodi.com/aeroamp.zip)
[a href="index.php?act=findpost&pid=173806"][{POST_SNAPBACK}][/a]
Erm, anyone have a valid URL to this?
Two new mirrors:
.RAR Mirror at MenZa.org (115 kb) (http://www.menza.org/files/foo_looks-1.10.rar)
.ZIP Mirror at MenZa.org (140 kb) (http://www.menza.org/files/foo_looks-1.10.zip)
Just thought I'd contribute to a plugin this fabulotastic (meh, I suck at words )
mirrors are for 1.10, any mirrors for 2.x since the default loodi url is dead?
Try here (http://www.plurimedia.it/foo_looks.zip).
Alessandro
Thanks!
Has there been any news/progress on compatibility with the latest foobar?
Thanks!
Has there been any news/progress on compatibility with the latest foobar?
[{POST_SNAPBACK}][/a] (http://index.php?act=findpost&pid=370837")
Probable answer is [a href="http://www.hydrogenaudio.org/forums/index.php?showtopic=19310&st=875#]here[/url].