Shop Forum More Submit  Join Login
JS Smooth Browser by Br3tt JS Smooth Browser by Br3tt
a jscript for the component "JScript Panel" v1.0.0 or better

[Change Log]
 * 2015-11-10 at 11:00 (GMT+1) : 0.9.0 >> Initial beta release version (for the new component JScript panel 1.0.0)
 * 2015-11-10 at 16:43 (GMT+1) : 0.9.1 >> custom color "selected text" was only working in Grid view : now fixed
 * 2015-11-12 at 12:10 (GMT+1) : 0.9.2 >> bugs fixing (when panel hidden, if display = Grid mode, nothing draw when panel shown + on source = playlist, when clicking on a group item (album / artist / genre) it now selects all the tracks of the group and no more only the 1st one)
 * 2015-11-15 at 10:30 (GMT+1) : 0.9.3 >> added a context menu option to toggle caching image on disk (to get a better image quality on big cover size, degraded when using disk cache) + bugs fixing
[/Change Log]

 * 2 sources possible: library or active playlist (initialy designed as a library browser)
 * 3 columns modes available: albums, artists, genres
 * 4 display modes avaliable: column, art+bottom label, art+right label, grid art view
 * True Smooth Scrolling
 * Screen Touch support
 * Header bar at Top (can be hidden with CTRL+T)
 * Vertical Scrollbar (can be hidden with CTRL+B)
 * Filter box
 * Custom or Cover art Wallpaper as background supported (including a blur effect)
 * Windows scaling compliant (you can adjust zoom size in real time with CTRL+mousewheel)
 * Custom Panel Colors (in Properties window)
 * ... and more!

 * Windows Vista, 7, 8 or 10
 * foobar2000 v1.3 or better >>
 * component "JScript Panel" 1.0.0 or better >>…

 * copy folder "js_br3tt" into your foobar2000 Profile folder (it contains the "jssb" subfolder)
 * import/paste the main script into a "JScript Panel" instance of your foobar2000 layout (DUI or CUI)
 * Important: for any update of my scripts, replace the whole folder "js_br3tt\jssb\" each time
   and Clear the panel properties (hold SHIFT key + Right-click > Properties > "Clear" button > "OK" button)

 * for the GENRE column mode, images have to be stored in js_br3tt\jssb\images\genres\ folder
 * for the ARTIST column mode, to make the disk cache working, artist images path have to be set in window Properties (SHIFT + right click > Properties)
 * Hold SHIFT key + right click to display Configure script and panel Properties entries
 * Always use Jscript9 engine for better performances (choice is to be made when you open the "Configure..." window from a JScript Panel instance (right click)
 * Change colors and fonts in foobar2000 Preferences > DefaultUI or ColumsUI
 * Some minor settings can be changed in window Properties (SHIFT + right click > Properties), use it carefully
 * Use Keyboard for "jumping" to an artist/genre in the library view (incremental search feature like in ELPlaylist)
 * Right Click on items for contextual menu for the selection
 * CTRL+T to toggle the columns toolbar
 * CTRL+B to toggle the scrollbar
 * Hold CTRL + Mouse Wheel to scale elements (useful for 'retina' screens)
 * Hold SHIFT + Mouse Wheel to scale group header and so the cover art size
 * F3 key to show now playing track (if present in library and not filtered)
 * F5 key to refresh covers
 * ... etc

Thanks by advance for bugs report and feedback :)
Add a Comment:
LeFrenchCroissant Featured By Owner Jan 12, 2019
Would love to get this working but unfortunately I'm getting the following error:

JavaScript compilation error:
Syntax error
File: C:\Users\HLB\Downloads\foobar2000\js_br3tt\jssb\js\JScommon.js
Line: 540, Col: 8
   }; else {

What can I do?
Whills01 Featured By Owner Nov 10, 2018
Thanks for your hard work. I've been using it for months. I am wondering how I can get the album covers loaded in background automatically. I've tried to modify the script, but I found it was too difficult. I would appreciate it if you could tell me how to do it or add this function in the next update.
Sub13Vegan Featured By Owner Jan 21, 2018
Thank you for creating this Br3tt I've made some small changes and the only thing I need is middle click track list menu lol but it's a much appreciated upgrade from foo_uie_graphical_browser. 
oyorast Featured By Owner Nov 1, 2017
I tried everything but can't get artist pictures to work for some reason. 
alwaysbeta Featured By Owner Oct 29, 2017
Any update plans? :D (Big Grin) 
Br3tt Featured By Owner Nov 11, 2017  Hobbyist Interface Designer
hi, nothing planned for now... can't tell when it will :)
alwaysbeta Featured By Owner Dec 21, 2017
Christmas is coming. Any surprises or "sugar"? :D (Big Grin) 
Jazzthieve Featured By Owner Jun 11, 2017
Am I the only one getting compile and syntax errors when applying this script on post v1.2.0 jscript?
kjc66 Featured By Owner Jul 25, 2017  Hobbyist Interface Designer
I just tried it and I am having the same problem. 
Jeannela Featured By Owner Feb 19, 2017
bugreport, in function `get_metrics`, scrollbarWidth should not be zoomed.
jahwise Featured By Owner Edited Feb 4, 2017
Super boulot ton JScript !
Is there any possibility to display by folder ? would be great!
arhipov-rp Featured By Owner Edited Feb 2, 2017
I use JS Smooth Browser (downloaded from here…) and JScript Panel v1.2. Genre list in Smooth Browser is not the same as Album list. I asked marc2003…, he replied that "it doesn't appear to support multi-value tags". Is it possible to add such feature?
Br3tt Featured By Owner Feb 21, 2017  Hobbyist Interface Designer
not planned
HiepNH Featured By Owner Edited Nov 16, 2016
It works well. But How can I make the background transparent?
janicka1 Featured By Owner Edited Jul 1, 2016
wow great work, i love what you're doing!

i have a couple of questions:

- i can't get the artist column mode find my artist pics :(
my artist pics are in "C:\Users\username\AppData\Roaming\foobar2000\wsh_data\artists\%artist%\" and are named eg.: "Beck_2713261.jpg" (fetched with marc2003 script)
I tried all kinds of things, but they will just not be displayed..
  edit: it seems the script is looking for an artist.jpg inside the folder of the audiofiles.. but i could not find where this corresponding code in the script is :3 any help?

- is it possible to change the artist column view to %album artist% somehow? i usually listen to full albums only and now its splitting them.
  edit: okay, i found it, i can change that to whatever i like on line 39: tf_groupkey_artist: fb.TitleFormat("$if2($meta(artist,0),Unknow Artist)"), 
Jahtimes Featured By Owner May 30, 2016
J'aimerais diminuer encore le "row Height" car je le trouve trop espacé quand je réorganise par "Genre". C'est possible de le diminuer plus que le minimum proposé ?

Sinon tout est parfait Br3tt, merci encore !
Sgt-Meddle Featured By Owner May 25, 2016
Works great thanks!
Jazzthieve Featured By Owner Edited Mar 4, 2016
Very nice browser however I noticed when using a large playlist as source and cursor follows playlist when a song stops and jumps (shuffle) to a different song the covers in grid mode won't load. They only load after I either move my mouse pointer over the grid, scroll the playlist, point a song on the playlist or when a play count is registered at the halfway point of the playing song. The loading seems to totally freeze, in other words if you leave foobar untouched when it transitions to a next song the browser will not load any image and just freeze. This does not seem to happen on playlists with less items (probably due to sufficient caching). Enabling cache image or diasbling it doesn't make a difference.
The key issue is thus, large playlists makes it not load the covers when you don't interact with foobar.
bwer1233 Featured By Owner Edited Mar 4, 2016
This is great! Jscript panel seems to be a whole lot easier to manage from a users perspective than WSH as well, making me even more excited to see you moving this style of playlist over! Quick question though. What part of the script is handling playlist sorting. Right now without looking at the script it APPEARS you are calling an if/then to make the playlist sort by album, and then follow additional sub rules to also break it up by artist. I want to eliminate these sub sorting rules and have it all ONLY sort by album (so no matter what is in the artist/albumartist/composer/etc tags it still only shows you ONE album.) I'm gonna take a wild guess and say lines 16-22 are handling the sorting rules, I'm just going to post this here anyway for you to either validate my assumptions or point me in the right direction. Seems as though my best bet would be to just change these values and watch what happens. Process of elimination is a great learning tool! (since I do have a basic understanding of this I should be able to make these changes without breaking the script and having to start over!)

EDIT: I just realized I posted this in your browser script page, my question involves your playlist script.......I'll leave it here until I move it over to your other page
SayQueensbridge Featured By Owner Feb 29, 2016
When using the Genre column, albums with the 'Pop' genre tag don't have their own header and are instead listed in the header right before it ('Metal' in my case). 

If I change the genre to something like 'Top' 'Test' 'Pops' or 'P', then it'll show up as its own header. Kind of weird that only the 'Pop' genre is listed under a different header. 

Thanks for the component, works great otherwise!
Kyliathy Featured By Owner Feb 15, 2016  Professional Writer
Hey Br3tt aka Falstaff :). Thank you so much for creating these useful Foobar components. I donated you some points :). Keep up the good work!

I also have one small feature request for the JS Smooth Browser: there is currently no possibility to customize the Playlist Name where the Browser puts the library selection. I've seen that other library browsers have that and I believe it's a pretty important feature. Until you implement something, I had to hard-code the modification in your script.
Fizbin69 Featured By Owner Edited Feb 11, 2016
Post deleted by Fizbin69. (Posting it somewhere else)
Enigma776 Featured By Owner Feb 9, 2016
Getting "This script requires the component JScript Panel v1.0.0 or higher." Even though I am running 1.1.1. Same for all the JS Smooth scripts. Cleared out the old JSPlaylist stuff but it still thinks I am using an old JScript component.
Br3tt Featured By Owner Edited Feb 10, 2016  Hobbyist Interface Designer
no time to update, just put in comment the 02 first lines of the script :

if (!("FormatDuration" in utils))
    fb.ShowPopupMessage("This script requires the component JScript Panel v1.0.0 or higher.\n\…");
OoNebsoO Featured By Owner Jan 24, 2016
Br3tt, lovely browser.

Just wondering if you thought of adding some alphabet filter into it? Hundreds and hundreds of artists would be easier to browse...
Br3tt Featured By Owner Jan 31, 2016  Hobbyist Interface Designer
type on keyboard the first letters of the artist to jump, it will ....
OoNebsoO Featured By Owner Feb 1, 2016
Forgot about that, as had just the mouse in mind. But this works just great, quick and easy. Cheers.
Br3tt Featured By Owner Feb 1, 2016  Hobbyist Interface Designer
OoNebsoO Featured By Owner Jan 25, 2016
Also, could a button or keyboard shortcut be made for us to quickly (no right click -> Settings -> Columns -> choice) switch between displays of Albums, Artists and Genres?
JGDD Featured By Owner Jan 20, 2016

Getting a reproducible crash in last JSSB.

Error Message:

JScript Panel (JS Smooth Browser v20151114-1630-340 by Br3tt aka Falstaff >> Microsoft JScript runtime error:
'brw.groups[...].pl' is null or not an object
File: <main>
Line: 707, Col: 25
<source text only available at compile time>

How to reproduce: Set JSSB Source to Playlist & Column to Album. Select something from library so there is only one album showing in JSSB. Drag item to 'Send to ...'

It will crash every time. It will NOT crash if you already have a playlist you are dragging it to or if there is more than one item (album) showing in JSSB.
Misdelivered Featured By Owner Jan 19, 2016  Hobbyist General Artist
Hey man is it possible to make it follow playback (when in artist mode)?
And can I disable it sending selection to a new playlist on a single click? 
Br3tt Featured By Owner Jan 19, 2016  Hobbyist Interface Designer
1) follow playback only available when the panel is used as a playlist viewer (source)
2) not withou tediting script ... and i do not have the time to tell you what to change, so try by yourself if it"s important for you
Misdelivered Featured By Owner Jan 19, 2016  Hobbyist General Artist
ClemensDemenz Featured By Owner Jan 19, 2016
Hi, thanks again for your brilliant work.
I have JS Smooth Browser, Smooth Playlist and Smooth Playlist Manager in three columns (Default UI). If I choose Album Art as Background in each of them I have the pic three times. Is there a way to have Album Art as one shared background image (blurred)?
Br3tt Featured By Owner Jan 19, 2016  Hobbyist Interface Designer
jongorenard Featured By Owner Jan 14, 2016
En utilisant la vue "Artist", j'ai remarqué que, lorsqu'il y a plusieurs artistes pour une même piste, seul le premier artiste était affiché (ce qui est confirmé avec $meta(artist,0) dans le script non ?).
Est-ce possible dans une version future d'afficher tous les artistes de la base, même ceux placé en deuxième, troisième ou quatrième position dans le tag %artist% ?
Br3tt Featured By Owner Jan 14, 2016  Hobbyist Interface Designer
salut. Pas de suite de suite, c'est plus complexe à faire ... donc je ne promets rien
jongorenard Featured By Owner Jan 16, 2016
ok fais de ton mieux
Br3tt Featured By Owner Jan 17, 2016  Hobbyist Interface Designer
merci, et Bonne Année :)
JGDD Featured By Owner Jan 10, 2016
Any chance of adding keyboard arrows navigation?
Br3tt Featured By Owner Jan 10, 2016  Hobbyist Interface Designer
of course, as soon as possible, for now i'm busy on other stuff...
deviantart3370 Featured By Owner Jan 9, 2016
I've got this error message from time to time. Please check this error.

JScript Panel (JS Smooth Browser v20151114-1630-340 by Br3tt aka Falstaff >> Microsoft JScript Runtime Error:
'brw.groups[...]' is null or not an object.
File: <main>
Line: 388, Col: 9
<source text only available at compile time>
sl33py13 Featured By Owner Dec 31, 2015
Great script Br3tt. Can I force the script to load up all album art when it first runs? I ask because the first time I scroll through my collection, it waits until something has become visible on the screen to load it's art. Once I've scrolled through everything once, the art is there instantly regardless of where/when I scroll (until something new is added of course). Thanks in advance.
sl33py13 Featured By Owner Edited Dec 29, 2015
dupe post
sl33py13 Featured By Owner Edited Dec 29, 2015
Hey Br3tt, I'm having some trouble running this script properly. I've posted about it on hydrogen audio, could you please take a look? (My post is number 83 in this thread). Thanks in advance!…
Br3tt Featured By Owner Dec 30, 2015  Hobbyist Interface Designer
answered in forum
Punkpkin Featured By Owner Dec 28, 2015
Please add support for moving with keyboard arrow, and also when you search (thanks for adding that!) that it immediately loads it on the playlist (for example, if I search "Adolescents", I have to click on Adolescents after the cursor has been positioned over the band name, for me to see the band albums).
Plutooo Featured By Owner Dec 28, 2015
Realy like to make this work.. But after import it just white "Create your script\Click here to open the editor."
No error or something, the script looks at in right place (use Jscript9 / Delay) but nothing ?
JSPlaylist script working, but not this?
seriousstas Featured By Owner Dec 4, 2015  Student
Hi Bt3tt !
I listen to mainly  collections How do I configure Sort Order? Displays each file separately  :(
Can you help with Folder Structure sorting ?
Add a Comment:


Submitted on
November 10, 2015
File Size
162 KB


22,065 (5 today)
39 (who?)
3,322 (1 today)