Skip to main content

Recent Posts

1

Myself I use an Album Artist Sort tag, so that I can make sure I have "Rainbow" and "Ritchie Blackmore's Rainbow" together, and "The Mothers of Invention" together with Zappa.

That's an elegant solution that I haven't thought of. Thanks!
2
Support - (fb2k) / Re: *Browsable* similar artists
Last post by OoNebsoO -
This is great, thanks a lot. Can't wait to play with it.
3
Support - (fb2k) / Re: *Browsable* similar artists
Last post by jazzthieve -
This is the entire script from top to bottom for the similar artist frames, this won't work by just copy pasting as many things are depended on locally set things (paths and panel names and such):

Code: [Select]
$puts(x.frame,19)
$puts(wh.frame,13)
$puts(similar.y.gap,77)
$puts(similar.y1,9)
$puts(similar.y2,$add($get(similar.y1),$get(similar.Y.gap)))
$puts(similar.y3,$add($get(similar.y2),$get(similar.Y.gap)))
$puts(similar.y4,$add($get(similar.y3),$get(similar.Y.gap)))
$puts(similar.y5,$add($get(similar.y4),$get(similar.Y.gap)))
$puts(similar.x,-7)
$puts(similar.wh,13)



//SIMILAR ARTISTS
$puts(similar.panel.w,340)

$showpanel_c(SIMILAR1,$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,0),1)\$meta(similar artist,0).txt),1,0))
$showpanel_c(SIMILAR2,$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,1),1)\$meta(similar artist,1).txt),1,0))
$showpanel_c(SIMILAR3,$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,2),1)\$meta(similar artist,2).txt),1,0))
$showpanel_c(SIMILAR4,$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,3),1)\$meta(similar artist,3).txt),1,0))
$showpanel_c(SIMILAR5,$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,4),1)\$meta(similar artist,4).txt),1,0))

$movepanel_c(SIMILAR1,$add($get(similar.x),10),$add($get(similar.y1),5),$get(similar.panel.w),67)
$movepanel_c(SIMILAR2,$add($get(similar.x),10),$sub($get(similar.y2),5),$get(similar.panel.w),67)
$movepanel_c(SIMILAR3,$add($get(similar.x),10),$add($get(similar.y3),5),$get(similar.panel.w),67)
$movepanel_c(SIMILAR4,$add($get(similar.x),10),$add($get(similar.y4),5),$get(similar.panel.w),67)
$movepanel_c(SIMILAR5,$add($get(similar.x),10),$add($get(similar.y5),5),$get(similar.panel.w),67)


$puts(roundrect.X,0)
$puts(roundrectY.gap,77)
$puts(roundrectY1,0)
$puts(roundrect.H,74)
$puts(roundrect.W,$sub(%_width%,1))
$puts(roundrectY2,$add($get(roundrectY1),$get(roundrectY.gap)))
$puts(roundrectY3,$add($get(roundrectY2),$get(roundrectY.gap)))
$puts(roundrectY4,$add($get(roundrectY3),$get(roundrectY.gap)))
$puts(roundrectY5,$add($get(roundrectY4),$get(roundrectY.gap)))
$puts(line.color.present,%_COLOR%)
$puts(line.color.nonpresent,%_COLOR%)
$puts(fill.color.present,20-20-20)
$puts(fill.color.nonpresent,20-20-20)
$puts(frame.path,D:\foobar2000_music\skins\Acerbus\Images\White\cover_frame.png)
$puts(artist.img.path,G:\IMG\Artist_images)


////WIDER FRMAE COLORS
//LINES
$puts(line.color0,
$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,0),1)\$meta(similar artist,0).txt),
$get(line.color.present),$get(line.color.nonpresent)))
$puts(line.color1,
$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,1),1)\$meta(similar artist,1).txt),
$get(line.color.present),$get(line.color.nonpresent)))
$puts(line.color2,
$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,2),1)\$meta(similar artist,2).txt),
$get(line.color.present),$get(line.color.nonpresent)))
$puts(line.color3,
$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,3),1)\$meta(similar artist,3).txt),
$get(line.color.present),$get(line.color.nonpresent)))
$puts(line.color4,
$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,4),1)\$meta(similar artist,4).txt),
$get(line.color.present),$get(line.color.nonpresent)))

//FILLS
$puts(fill.color0,
$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,0),1)\$meta(similar artist,0).txt),
$get(fill.color.present),$get(fill.color.nonpresent)))
$puts(fill.color1,
$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,1),1)\$meta(similar artist,1).txt),
$get(fill.color.present),$get(fill.color.nonpresent)))
$puts(fill.color2,
$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,2),1)\$meta(similar artist,2).txt),
$get(fill.color.present),$get(fill.color.nonpresent)))
$puts(fill.color3,
$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,3),1)\$meta(similar artist,3).txt),
$get(fill.color.present),$get(fill.color.nonpresent)))
$puts(fill.color4,
$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,4),1)\$meta(similar artist,4).txt),
$get(fill.color.present),$get(fill.color.nonpresent)))


///////WIDE FRAMES
$drawroundrect($get(roundrect.X),$get(roundrectY1),$get(roundrect.W),$get(roundrect.H),10,10,$get(fill.color0),$get(line.color0),)
$drawroundrect($get(roundrect.X),$get(roundrectY2),$get(roundrect.W),$get(roundrect.H),10,10,$get(fill.color1),$get(line.color1),)
$drawroundrect($get(roundrect.X),$get(roundrectY3),$get(roundrect.W),$get(roundrect.H),10,10,$get(fill.color2),$get(line.color2),)
$drawroundrect($get(roundrect.X),$get(roundrectY4),$get(roundrect.W),$get(roundrect.H),10,10,$get(fill.color3),$get(line.color3),)
$drawroundrect($get(roundrect.X),$get(roundrectY5),$get(roundrect.W),$get(roundrect.H),10,10,$get(fill.color4),$get(line.color4),)


/////FRAME BACKGROUND
$drawroundrect($add($get(roundrect.X),343),$add($get(roundrectY1),5),62,62,10,10,255-255-255,255-255-255,)
$drawroundrect($add($get(roundrect.X),343),$add($get(roundrectY2),5),62,62,10,10,255-255-255,255-255-255,)
$drawroundrect($add($get(roundrect.X),343),$add($get(roundrectY3),5),62,62,10,10,255-255-255,255-255-255,)
$drawroundrect($add($get(roundrect.X),343),$add($get(roundrectY4),5),62,62,10,10,255-255-255,255-255-255,)
$drawroundrect($add($get(roundrect.X),343),$add($get(roundrectY5),5),62,62,10,10,255-255-255,255-255-255,)


///////ARTIST IMAGES
$imageabs(345,$add($get(roundrectY1),7),60,60,$get(artist.img.path)\$meta(similar artist,0)\$meta(similar artist,0)_0.jpg,nokeepaspect ,,,)
$imageabs(345,$add($get(roundrectY2),7),60,60,$get(artist.img.path)\$meta(similar artist,1)\$meta(similar artist,1)_0.jpg,nokeepaspect ,,,)
$imageabs(345,$add($get(roundrectY3),7),60,60,$get(artist.img.path)\$meta(similar artist,2)\$meta(similar artist,2)_0.jpg,nokeepaspect ,,,)
$imageabs(345,$add($get(roundrectY4),7),60,60,$get(artist.img.path)\$meta(similar artist,3)\$meta(similar artist,3)_0.jpg,nokeepaspect ,,,)
$imageabs(345,$add($get(roundrectY5),7),60,60,$get(artist.img.path)\$meta(similar artist,4)\$meta(similar artist,4)_0.jpg,nokeepaspect ,,,)


//BLANK ARTIST IMAGES
$if($findfile(G:\IMG\Artist_images\$meta(similar artist,0)\$meta(similar artist,0)_0.jpg),,
$imageabs(345,$add($get(roundrectY1),7),60,60,%_imagedir%\no-artist-image.jpg,nokeepaspect ,,,))
$if($findfile(G:\IMG\Artist_images\$meta(similar artist,1)\$meta(similar artist,1)_0.jpg),,
$imageabs(345,$add($get(roundrectY2),7),60,60,%_imagedir%\no-artist-image.jpg,nokeepaspect ,,,))
$if($findfile(G:\IMG\Artist_images\$meta(similar artist,2)\$meta(similar artist,2)_0.jpg),,
$imageabs(345,$add($get(roundrectY3),7),60,60,%_imagedir%\no-artist-image.jpg,nokeepaspect ,,,))
$if($findfile(G:\IMG\Artist_images\$meta(similar artist,3)\$meta(similar artist,3)_0.jpg),,
$imageabs(345,$add($get(roundrectY4),7),60,60,%_imagedir%\no-artist-image.jpg,nokeepaspect ,,,))
$if($findfile(G:\IMG\Artist_images\$meta(similar artist,4)\$meta(similar artist,4)_0.jpg),,
$imageabs(345,$add($get(roundrectY5),7),60,60,%_imagedir%\no-artist-image.jpg,nokeepaspect ,,,))


///////FRAME
$imageabs($add($get(roundrect.X),343),$add($get(roundrectY1),5),$sub($get(roundrect.W),352),$sub($get(roundrect.H),10),$get(frame.path),,,,)
$imageabs($add($get(roundrect.X),343),$add($get(roundrectY2),5),$sub($get(roundrect.W),352),$sub($get(roundrect.H),10),$get(frame.path),,,,)
$imageabs($add($get(roundrect.X),343),$add($get(roundrectY3),5),$sub($get(roundrect.W),352),$sub($get(roundrect.H),10),$get(frame.path),,,,)
$imageabs($add($get(roundrect.X),343),$add($get(roundrectY4),5),$sub($get(roundrect.W),352),$sub($get(roundrect.H),10),$get(frame.path),,,,)
$imageabs($add($get(roundrect.X),343),$add($get(roundrectY5),5),$sub($get(roundrect.W),352),$sub($get(roundrect.H),10),$get(frame.path),,,,)


//TEXT
$font(Segoe ui,12,bold)
$drawtextex($meta(similar artist,0),10,$sub($get(similar.y1),3),320,25,103-170-223,end_ellipsis)
$drawtextex($meta(similar artist,1),10,$sub($get(similar.y2),3),320,25,103-170-223,end_ellipsis)
$drawtextex($meta(similar artist,2),10,$sub($get(similar.y3),3),320,25,103-170-223,end_ellipsis)
$drawtextex($meta(similar artist,3),10,$sub($get(similar.y4),3),320,25,103-170-223,end_ellipsis)
$drawtextex($meta(similar artist,4),10,$sub($get(similar.y5),3),320,25,103-170-223,end_ellipsis)

$font(Segoe ui,11,italic)
$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,0),1)\$meta(similar artist,0).txt),
$drawtext(✔  Artist in Library,10,$add($get(similar.y1),20),380,25,200-200-200,),
$drawtext(✖  Artist not available,10,$add($get(similar.y1),20),380,25,200-200-200,))
$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,1),1)\$meta(similar artist,1).txt),
$drawtext(✔  Artist in Library,10,$add($get(similar.y2),20),380,25,200-200-200,),
$drawtext(✖  Artist not available,10,$add($get(similar.y2),20),380,25,200-200-200,))
$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,2),1)\$meta(similar artist,2).txt),
$drawtext(✔  Artist in Library,10,$add($get(similar.y3),20),380,25,200-200-200,),
$drawtext(✖  Artist not available,10,$add($get(similar.y3),20),380,25,200-200-200,))
$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,3),1)\$meta(similar artist,3).txt),
$drawtext(✔  Artist in Library,10,$add($get(similar.y4),20),380,25,200-200-200,),
$drawtext(✖  Artist not available,10,$add($get(similar.y4),20),380,25,200-200-200,))
$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,4),1)\$meta(similar artist,4).txt),
$drawtext(✔  Artist in Library,10,$add($get(similar.y5),20),380,25,200-200-200,),
$drawtext(✖  Artist not available,10,$add($get(similar.y5),20),380,25,200-200-200,))
4
Go to Preferences/File/Add Location/

and write something like:      spotify:album:401DhjeJg1yVIfBN2A55JY

where 401DhjeJg1yVIfBN2A55JY is the album code. To get the album codes I open Spotify Web Player. You need a premium account.

It works fine.

Ys
Rozzo
so there's no way for it to just load all of the artists/albums I've saved to spotify?
5
Support - (fb2k) / Re: *Browsable* similar artists
Last post by jazzthieve -
edit: not relevant anymore
6
Support - (fb2k) / Re: *Browsable* similar artists
Last post by jazzthieve -
This is using panel stack and columns ui and requires knowledge on how to use these components. It also involves jscript both using bio script from Wilb and from marc2003.
That panel on the right is actually simply a panel stack with 5 separate jscript panels within in. It really is a hack solution as I'm no coder at all.

First off, the similar artists are based on tags, specifically a multi value tag called %similar artist%. The way I get foobar to tell me which artists are present and which are not is by using Wilb's biography jscript script. That script saves a text file locally for each artist biography found of an artist in your library (played at least one). Using the $findfile function I let foobar search for these text files and whichever biography text file isn't present means I don't have this artist present in my library.

Note: I did spend some time to get all artists played at least once for a few seconds to get a txt file. Tip, you can color code artists which don't have a txt file locally (again using $findfile) to get all your artists played and present.

This part shows "artist in library" and "artist not in library"

Code: [Select]
$font(Segoe ui,11,italic)
$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,0),1)\$meta(similar artist,0).txt),
$drawtext(✔  Artist in Library,10,$add($get(similar.y1),20),380,25,200-200-200,),
$drawtext(✖  Artist not available,10,$add($get(similar.y1),20),380,25,200-200-200,))
$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,1),1)\$meta(similar artist,1).txt),
$drawtext(✔  Artist in Library,10,$add($get(similar.y2),20),380,25,200-200-200,),
$drawtext(✖  Artist not available,10,$add($get(similar.y2),20),380,25,200-200-200,))
$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,2),1)\$meta(similar artist,2).txt),
$drawtext(✔  Artist in Library,10,$add($get(similar.y3),20),380,25,200-200-200,),
$drawtext(✖  Artist not available,10,$add($get(similar.y3),20),380,25,200-200-200,))
$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,3),1)\$meta(similar artist,3).txt),
$drawtext(✔  Artist in Library,10,$add($get(similar.y4),20),380,25,200-200-200,),
$drawtext(✖  Artist not available,10,$add($get(similar.y4),20),380,25,200-200-200,))
$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,4),1)\$meta(similar artist,4).txt),
$drawtext(✔  Artist in Library,10,$add($get(similar.y5),20),380,25,200-200-200,),
$drawtext(✖  Artist not available,10,$add($get(similar.y5),20),380,25,200-200-200,))

Change the path after the $findfile function to the location of your locally saved bio text file and of course the x,y,w,h positions. This is just my script lifted from my config as an example.

I drew my artist names:
Code: [Select]
$drawtextex($meta(similar artist,0),x,y,w,h,103-170-223,end_ellipsis)
$drawtextex($meta(similar artist,1),x,y,w,h,103-170-223,end_ellipsis)
$drawtextex($meta(similar artist,2),x,y,w,h,103-170-223,end_ellipsis)
$drawtextex($meta(similar artist,3),x,y,w,h,103-170-223,end_ellipsis)
$drawtextex($meta(similar artist,4),x,y,w,h,103-170-223,end_ellipsis)

And then overlapped these artist name position with a jscript panel set to transparent and made blank. Make sure for the size of the jscript panel to be the size of the area to match somewhat the size of your artist frame/name. If the panels are too large and overlap it won't match up with the names you want to click.
The code is courtesy to marc2003's contribution (which I butchered a bit ;) ).

Code: [Select]
// ==PREPROCESSOR==
// @import "%fb2k_profile_path%js_marc2003\js\lodash.min.js"
// @import "%fb2k_profile_path%js_marc2003\js\helpers.js"
// @import "%fb2k_profile_path%js_marc2003\js\panel.js"
// @import "%fb2k_profile_path%js_marc2003\js\lastfm.js"
// @import "%fb2k_profile_path%js_marc2003\js\list.js"
// ==/PREPROCESSOR==

var panel = new _.panel("test", ["metadb"]);
var list = new _.list("test", 0, -20, 0, 0);

list.update = function () {
this.data = [];
if (panel.metadb) {

{
            var tmp = panel.tf("$meta(similar artist," + 0 + ")");
this.data.push({
name : "",
url : "artist HAS " + tmp,
width : _.textWidth(tmp, panel.fonts.normal)
});
}
}
this.items = this.data.length;
window.Repaint();
}

panel.item_focus_change();

function on_size() {
panel.size();
list.w = panel.w - 20;
list.h = panel.h + 30;
list.size();
}

function on_paint(gr) {
panel.paint(gr);
list.paint(gr);
}

function on_metadb_changed() {
list.update();
}

function on_mouse_wheel(s) {
list.wheel(s);
}

function on_mouse_move(x, y) {
list.move(x, y);
}

function on_mouse_lbtn_up(x, y) {
list.lbtn_up(x, y);
}

function on_key_down(k) {
list.key_down(k);
}

function on_mouse_rbtn_up(x, y) {
return panel.rbtn_up(x, y, list);
}

Change this part var tmp = panel.tf("$meta(similar artist," + 0 + ")");  the number should correspond to the similar artist multi value position (0 is the first one, 1 is the second position within the multi value field)

Use the $showpanel fucntion in conjunction with $findfile again to let the jscript panel show or not. like this:

Code: [Select]
$showpanel_c(SIMILAR1,$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,0),1)\$meta(similar artist,0).txt),1,0))
$showpanel_c(SIMILAR2,$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,1),1)\$meta(similar artist,1).txt),1,0))
$showpanel_c(SIMILAR3,$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,2),1)\$meta(similar artist,2).txt),1,0))
$showpanel_c(SIMILAR4,$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,3),1)\$meta(similar artist,3).txt),1,0))
$showpanel_c(SIMILAR5,$if($findfile(G:\Datasets\biographies\lastfm\$left($meta(similar artist,4),1)\$meta(similar artist,4).txt),1,0))

Using $findfile you can do different things to dress it up a bit. For example I color code the roundrectangle frame depending on the presence of a txt bio file for easy visibility.
As I mention, it's a bit involved but it works great for me.
7
Support - (fb2k) / *Browsable* similar artists
Last post by OoNebsoO -
Hoping @jazzthieve could share some tips and tricks in how he made this sweet *feature* in his config. (green border frame in the right)



Currently using marc2003's lovely Last.fm jscript, but originally had something more like this in mind, using custom tags. But didn't know how to do it exactly. Hope that'll change.

EDIT: Maybe better suited in the General board?
8
Audio Hardware / Re: Interview Time
Last post by heliumballoon -
Thank you.

I like what I see in the Crown's and QSC's. I especially like the smaller size and the price. Good power per dollar.
9
Support - (fb2k) / Re: Foobar Filter
Last post by slayerist -
Thank you very much again ! Some trial and error and it works  :)

Metal Archives Band
Code: [Select]
https://www.metal-archives.com/search?searchString=$replace(%artist%,$char(32),_).&type=band_name

Metal Archives Album
Code: [Select]
https://www.metal-archives.com/search?searchString=$replace(%album%,$char(32),_).&type=album_title
10
Support - (fb2k) / Re: Foobar Filter
Last post by jazzthieve -
I checked an album page on metal archives. It seems in the link spaces are replaced with underscores. If an artist has spaces change %artist% to $replace(%artist%,$char(32),_). You'll probably will need to do the same for %album% so change that too to $replace(%artist%,$char(32),_).
You're actually doing something similar that I use only I do it for rateyourmusic.com. This for example gets the artist page:

Code: [Select]
https://rateyourmusic.com/artist/$lower($replace(%artist%,!,_,.,_,$char(32),_,&,and,é,e,à,a,è,e,á,a,$char(40),_,$char(41),_,-,_))

the $replace function replaces a certain character within a tag value with the next character described in the function.
Looking at this
Code: [Select]
$replace(%artist%,$char(32),_).
$char(32)  is the ascii code for the space character which gets replaced with _.
Note in my example I have way more characters to replace because weblinks don't use said characters (& becomes and, é becomes e,à becomes a,.....). Chances are you will need to do the same for metalarchives to get all exceptions right. You can adapt my rateyourmusic link and see if that catches all exceptions.