Recommended Posts

No problem!

Visual Style (Azrael 4.8.8 by Neksus)

foomyxas.jpg

Download

*Requires columns_ui

-

Buttons (Metal & Glass by myxamatosis)

Metal Pack

Metal.jpg

Download

Glass Pack

Glass.jpg

Download

-

Formatting

System Tray

//=============================Custom start==============================*

//============================Enable options=============================*
//Set to 1 to enable, 0 to disable, other details see the explanation!

$puts(enable_artist,1)
$puts(enable_album,1)
$puts(enable_lyrics,0)

$puts(enable_details,1)
$puts(enable_folders,0)

$puts(title_length,6)

//The length of the line is adjusted dynamically. if it always appears too long/short then you can finetune it here. Default value is 53 (53%)
$puts(line_modifier,53)

//the character used to draw the seperator-line
$puts(line_char,□)
//==============================Custom end===============================*





//============================Start Guessing=============================*
//enable tag-guessing? (set to 0 to completely disable any tag-guessing)
$puts(enable_guess,1)

//Try to guess Tracknumbers? (set to 0 to disable)
//If you experience slowdowns with untagged files, disable this.
$puts(enable_trackguess,1)

//get filename and do cleanup
$puts(filename,
$if(%__referenced_file%,$trim(%__referenced_file%),$trim(%_filename%)))
$puts(filename,$replace($trim(%_filename%),_,' ','%20',' ','  ',' ','  ',' '))

//check if guessing is enabled, otherwise use tags-only and skip guessing
$if($not($strcmp($get(enable_guess),1)),
$puts(artist,[$trim(%artist%)])
$puts(album,[$trim(%album%)])
$puts(title,[$trim(%title%)])
$puts(tracknr,[$trim(%tracknumber%)])
$puts(folder,$trim($replace(%_directoryname%,_,' ','%20',' ','  ',' '))),

//START GUESSING
$puts(filename2,$get(filename))

//tracknumber-guessing
$if(%tracknumber%,$puts(tracknr,$trim($num(%tracknumber%,2))),
$if($strcmp($get(enable_trackguess),1),

//search for 1st two digits
$puts(fname,$replace($substr($get(filename),1,1),1,0,2,0,3,0,4,0,5,0,6,0,7,0,8,0,9,0))
$if($strcmp($substr($get(fname),1,1),0),$puts(tracknr_check,1),)
$if($not($strcmp($get(tracknr_check),$char())),
$if($strcmp($lower($substr($get(filename),2,2)),$upper($substr($get(filename),2,2))),
$if($or($strcmp($substr($get(filename),3,3),' '),$strcmp($substr($get(filename),3,3),'.'),$strcmp($substr($get(filename),3,3),'-')),
$puts(tracknr,$left($get(filename),2))
$if($strcmp($substr($get(filename),3,4),' -'),
$puts(filename,$right($get(filename),$sub($len2($get(filename)),4))),
$puts(filename,$right($get(filename),$sub($len2($get(filename)),3)))
)),$puts(tracknr_check,)))

//search for [brackets]
$if($strcmp($get(tracknr_check),$char()),
$puts(tracknr_check,$if2($strchr($get(filename),'['),))
$if($not($strcmp($get(tracknr_check),$char())),
$if($strcmp($substr($get(filename),$add($get(tracknr_check),3),$add($get(tracknr_check),3)),']'),
$puts(tracknr,$substr($get(filename),$add($get(tracknr_check),1),$add($get(tracknr_check),2)))
$puts(filename,$replace($get(filename),$substr($get(filename),$get(tracknr_check),$add($get(tracknr_check),3)),)),
$puts(tracknr_check,))))

//search for (brackets)
$if($strcmp($get(tracknr_check),$char()),
$puts(tracknr_check,$if2($strchr($get(filename),'('),))
$if($not($strcmp($get(tracknr_check),$char())),
$if($strcmp($substr($get(filename),$add($get(tracknr_check),3),$add($get(tracknr_check),3)),')'),
$puts(tracknr,$substr($get(filename),$add($get(tracknr_check),1),$add($get(tracknr_check),2)))
$puts(filename,$replace($get(filename),$substr($get(filename),$get(tracknr_check),$add($get(tracknr_check),3)),)),
$puts(tracknr_check,))))

//search for -enclosed_in_dashes-
$if($strcmp($get(tracknr_check),$char()),
//1st pass
$puts(tracknr_check,$if2($strchr($get(filename),'-'),))
$if($not($strcmp($get(tracknr_check),$char())),
$if($and(
$strcmp($substr($get(filename),$add($get(tracknr_check),3),$add($get(tracknr_check),3)),'-'),
$strcmp($lower($substr($get(filename),$add($get(tracknr_check),1),$add($get(tracknr_check),2))),$upper($substr($get(filename),$add($get(tracknr_check),1),$add($get(tracknr_check),2))))
),
$puts(tracknr,$substr($get(filename),$add($get(tracknr_check),1),$add($get(tracknr_check),2)))

$if($strcmp($get(tracknr_check),1),
$puts(filename,$replace($get(filename),$substr($get(filename),$get(tracknr_check),$add($get(tracknr_check),3)),)),
$puts(filename,$replace($get(filename),$substr($get(filename),$get(tracknr_check),$add($get(tracknr_check),2)),)))
,


//2nd pass
$puts(fname,$right($get(filename),$sub($len2($get(filename)),$get(tracknr_check))))
$puts(tracknr_check,$if2($strchr($get(fname),'-'),))
$if($not($strcmp($get(tracknr_check),$char())),
$if($and(
$strcmp($substr($get(fname),$add($get(tracknr_check),3),$add($get(tracknr_check),3)),'-'),
$strcmp($lower($substr($get(fname),$add($get(tracknr_check),1),$add($get(tracknr_check),2))),$upper($substr($get(fname),$add($get(tracknr_check),1),$add($get(tracknr_check),2))))
),
$puts(tracknr,$substr($get(fname),$add($get(tracknr_check),1),$add($get(tracknr_check),2)))
$puts(filename,$replace($get(filename),'-'$get(tracknr),)),

//3rd pass (search backwards)
$puts(tracknr_check,$if2($strrchr($get(fname),'-'),))
$if($not($strcmp($get(tracknr_check),$char())),
$if($and(
$strcmp($substr($get(fname),$sub($get(tracknr_check),3),$sub($get(tracknr_check),3)),'-'),
$strcmp($lower($substr($get(fname),$sub($get(tracknr_check),2),$sub($get(tracknr_check),1))),$upper($substr($get(fname),$sub($get(tracknr_check),2),$sub($get(tracknr_check),1))))
),
$puts(tracknr,$substr($get(fname),$sub($get(tracknr_check),2),$sub($get(tracknr_check),1)))
$puts(filename,$replace($get(filename),'-'$get(tracknr),)),
$puts(tracknr_check,))))))))

//search for "#??"
$if($strcmp($get(tracknr_check),$char()),
$puts(tracknr_check,$if2($strchr($get(filename),'#'),))
$if($not($strcmp($get(tracknr_check),$char())),
$if($strcmp($upper($substr($get(filename),$add($get(tracknr_check),1),$add($get(tracknr_check),2))),$lower($substr($get(filename),$add($get(tracknr_check),1),$add($get(tracknr_check),2)))),
$puts(tracknr,$substr($get(filename),$add($get(tracknr_check),1),$add($get(tracknr_check),2)))
$if($or($strcmp($substr($get(filename),$sub($get(tracknr_check),1),$add($get(tracknr_check),3)),'[#'$get(tracknr)']'),
$strcmp($substr($get(filename),$sub($get(tracknr_check),1),$add($get(tracknr_check),3)),'(#'$get(tracknr)')')),
$puts(filename,$replace($get(filename),$substr($get(filename),$sub($get(tracknr_check),1),$add($get(tracknr_check),3)),)),
$puts(filename,$replace($get(filename),'#'$get(tracknr),))
),$puts(tracknr_check,))))

//search for "- ?? - "
$if($strcmp($get(tracknr_check),$char()),
//1st pass (backwards)
$puts(fname,$get(filename))
$puts(tracknr_check,$if2($strrchr($get(fname),'-'),))
$if($not($strcmp($get(tracknr_check),$char())),
$if($strcmp($substr($get(fname),$sub($get(tracknr_check),5),$sub($get(tracknr_check),4)),'- '),
$puts(tracknr,$substr($get(fname),$sub($get(tracknr_check),3),$sub($get(tracknr_check),2)))
$puts(filename,$replace($get(filename),$get(tracknr)' - ',)),

//2nd pass (backwards)
$puts(fname,$left($get(fname),$sub($get(tracknr_check),1)))
$puts(tracknr_check,$if2($strrchr($get(fname),'-'),))
$if($not($strcmp($get(tracknr_check),$char())),
$if($strcmp($substr($get(fname),$sub($get(tracknr_check),5),$sub($get(tracknr_check),4)),'- '),
$puts(tracknr,$substr($get(fname),$sub($get(tracknr_check),3),$sub($get(tracknr_check),2)))
$puts(filename,$replace($get(filename),$get(tracknr)' - ',)),

//3rd pass (backwards)
$puts(fname,$left($get(fname),$sub($get(tracknr_check),1)))
$puts(tracknr_check,$if2($strrchr($get(fname),'-'),))
$if($not($strcmp($get(tracknr_check),$char())),
$if($strcmp($substr($get(fname),$sub($get(tracknr_check),5),$sub($get(tracknr_check),4)),'- '),
$puts(tracknr,$substr($get(fname),$sub($get(tracknr_check),3),$sub($get(tracknr_check),2)))
$puts(filename,$replace($get(filename),$get(tracknr)' - ',)),
$puts(tracknr_check,))))))))

,$puts(tracknr_check,)))
//end tracknr-guess

//cleanup-filename (2nd pass)
$puts(filename,$replace($trim($caps2($get(filename))),'  ',' ','  ',' ',--,-,- -,-,- -,-))


//artist/title-guessing
$puts(fname,$replace($get(filename),' - ', ))
$puts(artist,$replace($substr($get(fname),1,$strchr($get(fname), )), ,))
$if($not($strcmp($get(artist),$char())),
$puts(title2,$replace($right($get(fname),$sub($len2($get(fname)),$add($len2($get(artist)),1))), ,' - ')),
$if($strcmp($get(filename),$get(filename2)),$puts(title2,),$puts(title2,$get(filename)))
)
$puts(artist,$if(%artist%,$trim(%artist%),$get(artist)))
$puts(title,$if(%title%,$trim(%title%),$get(title2)))
$if($not([%title%]),$if($stricmp($get(title),$char()),$puts(title,)))

//cleanup foldername
$puts(folder,$replace($trim($caps2(%_directoryname%)),_,' ','%20',' ','  ',' '))

//If a CUE-Sheet is used, use CUE-filename instead of folder
$puts(fname,$if(%__referenced_file%,
$replace($trim($caps2(%_filename%)),_,' ','%20',' ','  ',' '),
$get(folder)
))

//album/folder-guessing
$if(%album%,$puts(album,$trim(%album%)),$if(%venue%,$puts(album,'Live at: '$trim(%venue%)),
$puts(fname,$replace($get(fname),' - ', ))
$puts(artist2,$replace($substr($get(fname),1,$strchr($get(fname), )), ,))

$if($not($strcmp($get(artist2),$char())),
$if($strcmp($get(artist),$char()),$puts(artist,$get(artist2)))
$puts(album,$replace($right($get(fname),$sub($len2($get(fname)),$add($len2($get(artist2)),1))), ,' - ')),

$puts(fname,$get(title2))
$puts(fname,$replace($get(fname),' - ', ))
$puts(album2,$replace($substr($get(fname),1,$strchr($get(fname), )), ,))

$if($not($strcmp($get(album2),$char())),
$puts(title2,$replace($right($get(fname),$sub($len2($get(fname)),$add($len2($get(album2)),1))), ,' - '))
$puts(album,$get(album2))$puts(title,$get(title2)),
)))))

//=============================End Guessing==============================*





//=======================================================================*

//set 4-character filetype
$puts(filetype,$if(%__codec%,
[%__codec%],
$if(%__referenced_file%,
$cut($upper($ext(%__referenced_file%)),3),
$if($stricmp($left(%_path%,4),cdda),$cut($upper(%_path%),3),$cut($upper($ext(%_path%)),3)))))

//detect detailed filetype2
$puts(filetype2,$replace($get(filetype),
WAV,[%__codec% ]WAVE,
AIFF,Audio Interchange File Format,
AIF,Audio Interchange File Format,
IFF,Audio Interchange File Format,
SVX,Amiga 8SVX Sound,
SND,'Next/Sun Audio',
AU,'Next/Sun Audio',
VOC,Creatice Voice Format,
AC3,Dolby Digital Audio,
CDDA,Audio CD,
MKA,Matroska[ %__codec%],
Vorbis,OGG[ %__codec%],
MP4,MPEG-4[ %__codec%],
M4A,iTunes[ %__codec%],
MP2,MPEG Layer 2,
MP3,MPEG Layer 3,
AAC,AAC Audiostream,
WMA,Windows Media Audio,
MPC,Musepack,
MPP,Musepack,
MP+,Musepack,
OFR,OptimFROG,
OFS,OptimFROG DualStream,
FLA,FLAC,
APE,Monkey''s Audio,
MAC,Monkey''s Audio,
APL,Monkey''s Audio,
WV,WavePack,
SHN,Shorten,
PAC,LPAC,
SPX,Speex,
SID,C64 SID-Song,
MDZ,Compressed Soundtracker Module,
S3Z,Compressed Screamtracker Module,
ITZ,Compressed Impulsetracker Module,
XMZ,Compressed Fasttracker II Module,
MO3,Compressed Module,
MOD,Soundtracker Module,
S3M,Screamtracker Module,
XM,Fasttracker II Module,
IT,Impulsetracker Module,
UMX,Unreal Music File,
MTM,Multitracker Module,
TFM,Final Musicsystem eXtended
))
$puts(filetype2,$replace($get(filetype2),FLACC,FLAC))



//set replaygain-info
$if(%__replaygain_album_gain%,$puts(replaygain,AG),$if(%__replaygain_track_gain%,$puts(replaygain,TG),$puts(replaygain,)))

//set quality-info (bitrate, etc.)
$puts(quality,
$if2([%__bitrate_dynamic%kbps],[%__bitrate%kbps]))
$if($strcmp(%__codec%,musepack),$if(%__mpc_profile%,$puts(quality,%__mpc_profile%  $get(quality))))
$if($strcmp(%__codec%,MP3),$if(%__extrainfo%,$puts(quality,$get(quality)' '%__extrainfo%),$puts(quality,$get(quality)' CBR')),$puts(quality,$get(quality)[' '%__extrainfo%])
)
$puts(quality2,$replace($get(quality),[%__bitrate_dynamic%],[%__bitrate%]))

//======================================================================
//DETECTION CORE [end]
//our results are: $artist*, $album*, $title*, $tracknr*,
//$folder, $filename, $filetype, $filetype2, $quality*,
//$quality2* and $replaygain*
//* means if available - check this with:
//$not($strcmp($get(artist),$char())) <--- returns "true" if $artist is available(not empty)
//$quality2 is the same as $quality, but with averaged bitrate
//$filetype is 4-letter fileextension, while $filetype2
//returns a the full name of the audioformat(if possible)






//=======================================================================*
//artist
$if($strcmp($get(enable_artist),1),
$if($not($strcmp($get(artist),$char())),$padcut(Aritst,$get(title_length)): $get(artist)$char(10))
)

//album/folder
$if($strcmp($get(enable_album),1),$if($not($stricmp($get(album),$char())),$padcut(Album,$get(title_length)): $get(album)[' ('%date%')']$char(10),
$if($strcmp($get(enable_folders),0),,$padcut(Folder,$get(title_length)): $get(folder)$char(10))))


//title/file
$if($stricmp($get(title),$char()),$padcut(File,$get(title_length)): $get(filename),$padcut(Title,$get(title_length)): $if($not($strcmp($get(tracknr),$char())),'[#'$get(tracknr)'] ')$get(title))

//details-line
$if($strcmp($get(enable_details),1),
//build details-line
$puts(details-line,
$get(filetype2)
$if($not($strcmp($get(quality2),$char())),' / '$get(quality2))
$replace($get(replaygain),AG,' / 'AlbumGain,TG,' / 'TrackGain)
)

//output detailsline
$char(10)
$pad(,
$muldiv($max($len2($get(artist-line)),$len2($get(album-line)),$len2($get(title-line)),$len2($get(details-line))),$get(line_modifier),100)
,$get(line_char))
$char(10)
$get(details-line)
$get(lyrics-line)
)

//lyrics
$if($strcmp($get(enable_lyrics),1),
$puts(lyrics-line,
$char(10)$char(10)
$puts(lyrics,$if2(%lyric%,%lyrics%))
$if($get(lyrics),Lyrics:$char(10)$meta(lyrics,1))))

Status Bar

//**************************************
// set colors
//**************************************
$puts(col_paused,0000FF)
$puts(col_streaming,008800)
$puts(col_cue_file,880000)
$puts(col_progbar_symb1,CCCCCC)
$puts(col_progbar_symb2,666666)
$puts(col_time_remaining,000000)


//**************************************
// set variables
//**************************************
$puts(text_streaming,'Streaming')
$puts(text_listened_for,'Listened for:')
$puts(text_cue_file,'Cue File')
$puts(text_paused,'Paused')
$puts(text_time_remaining,[%_time_remaining%])
$puts(spacer_symb,' ')
$puts(spacer_width,2)
$puts(progbar_symb1,'▪')
$puts(progbar_symb2,'▪')
$puts(progbar_length,100)
$puts(text_bitrate,$if2($pad(%__bitrate_dynamic%,3)'kbps',$if2(%__bitrate%'kbps',)))
$puts(text_extrainfo,[%__extrainfo%])



//**************************************
// add colors and formatting
//**************************************
$puts(spacer,$repeat($get(spacer_symb),$get(spacer_width)))
$puts(text_streaming,$get(col_streaming)$get(text_streaming))
$puts(text_listened_for,$get(col_streaming)$get(text_listened_for))
$puts(text_cue_file,$get(col_cue_file)$get(text_cue_file))
$puts(text_paused,$get(col_paused)$get(text_paused))
$puts(text_time_remaining,$get(col_time_remaining)$get(text_time_remaining))
$puts(progbar_symb1,$get(col_progbar_symb1)$get(progbar_symb1))
$puts(progbar_symb2,$get(col_progbar_symb2)$get(progbar_symb2))



//***********************************************************
//***********************************************************



//**************************************
// streaming
//**************************************
$puts(streaming,
$if(%_time_total%,,
$get(text_streaming)$get(spacer)
)
)



//**************************************
// cuefile
//**************************************
$puts(cue_file,
$if(%__cue_audiotype%,
$get(text_cue_file)$get(spacer)
)
)



//**************************************
// codec
//**************************************
$if(%__codec%,

$if($stricmp(%__codec%,musepack),$puts(codec,'MPC'),
$if($stricmp(%__codec%,vorbis),$puts(codec,'Ogg'),
$puts(codec,%__codec%)
))
,
//If no codec tag and not streaming, read file extention
$if($and(%_time_total%,$not(%__codec%)),
$puts(codec,$upper($ext(%_path%)))
)

)



//**************************************
// bitrate
//**************************************
$puts(bitrate,$get(spacer)$get(text_bitrate))

$if($stricmp(%__codec%,musepack),
$if(%__mpc_profile%,
$puts(bitrate,$get(spacer)%__mpc_profile%$get(spacer)$get(text_bitrate))
)
)


//**************************************
// extrainfo
//**************************************

$puts(extrainfo,$get(spacer)$get(text_extrainfo))

$if($stricmp(%__codec%,musepack),
$if(%__mpc_streamversion%,$puts(extrainfo,$get(spacer)'sv'%__mpc_streamversion%))
)



//**************************************
// samplerate
//**************************************
$puts(samplerate,
$if(%__samplerate%,
$get(spacer)$cut(%__samplerate%,2)'kHz'
)
)



//**************************************
// channels
//**************************************
$puts(channels,
$if(%__channels%,
$get(spacer)$ifgreater(%__channels%,2,%__channels%ch,$ifgreater(%__channels%,1,Stereo,Mono))
)
)


//**************************************
// mp3 stereo mode
//**************************************
$puts(stereo_mode,
$if2('('$abbr(%__mp3_stereo_mode%)')',)
)

//**************************************
// Replay Gain
//**************************************
//track gain
$puts(rpg,

$if(%__replaygain_track_gain%,
$get(spacer)
' TGain:'$cut(%__replaygain_track_gain%,5)'dB'

$if(%__replaygain_album_gain%,
$get(spacer)' AGain:'$cut(%__replaygain_album_gain%,5)'dB'
)
)
)



//**************************************
// progress bar
// (checking total because of streaming)
//**************************************
$puts(progress_bar,
$if(%_time_total_seconds%,
$get(spacer)$get(spacer)
$progress2(%_time_elapsed_seconds%,%_time_total_seconds%,$get(progbar_length),$get(progbar_symb1),$get(progbar_symb2))
)
)



//**************************************
// progress %
// (checking total because of streaming)
//**************************************
$puts(progress_%,
$if(%_time_total_seconds%,
' ='$pad_right($muldiv(%_time_elapsed_seconds%,100,%_time_total_seconds%),3)'%'
)
)



//**************************************
// 'Listened for:'
// (used for streaming)
//**************************************
$puts(listened_for,
$if(%_time_total%,,
$get(spacer)$get(spacer)$get(text_listened_for)
)
)



//**************************************
// time
//**************************************
$puts(time,
$get(spacer)
[%_time_elapsed%]
$if(%_time_total%,
'/'%_time_total%
' ['$get(text_time_remaining)']'
)
)



//**************************************
// paused
//**************************************
$puts(paused,
$if(%_ispaused%,
$get(text_paused)
)
)



//**************************************
//**************************************
// create string
//**************************************
//**************************************

$get(streaming)
$get(cue_file)
$get(codec)
$get(bitrate)
$get(extrainfo)
$get(samplerate)
$get(channels)
$get(stereo_mode)
$get(progress_bar)
$get(progress_%)
$get(spacer)$get(listened_for)
$get(time)
$get(spacer)$get(rpg)

//Right adjust from now on
$char(9)
$get(paused)[/b]

Need something else? :cool:

Edited by myxamatosis

Hello Neksus, first of all, congratulations for Azrael... it's simply brilliant! Can't live without anymore...

For the status bar, I actually used upNorth's strings and modified it a little bit

http://pelit.koillismaa.fi/fb2k/strings.php?f=40

You should ask him :ninja:

Hello Neksus, first of all, congratulations for Azrael... it's simply brilliant! Can't live without anymore...

For the status bar, I actually used upNorth's strings and modified it a little bit

http://pelit.koillismaa.fi/fb2k/strings.php?f=40

You should ask him :ninja:

584752034[/snapback]

I already have permission to use any of his things in my config!

My VA and Singletrack detection builds on his work!

[edit] ups! forgot: Thanks for the support!!! [/edit]

--

Neksus

if you want this config:

foobar.png

then download this: columns.zip

if you want this config:

foobar.png

then download the above config (delete all text from the 'artist' column) and then get foo_text and litestep and do the following:

in your theme.rc, make sure these modules are loaded:

*NetLoadModule 	 xlabellight-3.0.9
*NetLoadModule 	 mzscript-0.9-beta_12
*NetLoadModule 	 literunner-2.1
*NetLoadModule 	 kidnap-0.2

in your theme.rc add this for kidnap/literunner:

OnRun [$FOOBAR2000_CLASS$][][!execute [!KidnapCapture [xLabel][cdsCurrent][$FOOBAR2000_CLASS$][][2][2]][!LabelShow cdsCurrent]][!execute [!LabelHide cdsCurrent][!KidnapRelease [xLabel][cdsCurrent]]]

make sure $FOOBAR200_CLASS$ is a defined evar. i use an evar because the foobar class is a long string of numbers and it just looks ugly to use it. to get the class of foobar, use winspy and then add it into your evars.rc.

now, add this into your theme.rc as two new labels:

*Label cdsCurrent

cdsCurrentMoveable false
cdsCurrentStartHidden true
cdsCurrentX 0
cdsCurrentY 0
cdsCurrentWidth 180
cdsCurrentHeight 180
cdsCurrentOnLeftClickDown !none
cdsCurrentOnLeftClick !none
cdsCurrentOnLeftDoubleClick !none
cdsCurrentOnMiddleClickDown !none
cdsCurrentOnMiddleClick !none
cdsCurrentOnMiddleDoubleClick !none
cdsCurrentOnRightClickDown !none
cdsCurrentOnRightClick !none
cdsCurrentOnRightDoubleClick !none
cdsCurrentOnDrop "$AudioPlayer$"
cdsCurrentAlwaysOnTop false
cdsCurrentImage "current.png"
cdsCurrentImageMode "tile"
cdsCurrentText "[line('$PersonalDir$foobar.rc',2)]"
cdsCurrentFont "verdana"
cdsCurrentFontHeight 13
cdsCurrentFontVertAlign top
cdsCurrentFontAlign left
cdsCurrentFontColor 444444
cdsCurrentFontBold
cdsCurrentNewLineSpace -1
cdsCurrentAutoLineBreak
cdsCurrentOnDrop "$AudioPlayer$"

*cdsCurrentModuleHook !LabelLsBoxHook cdsCover

cdsCoverMoveable false
cdsCoverStartHidden false
cdsCoverX 0
cdsCoverY 30
cdsCoverWidth 96
cdsCoverHeight 96
cdsCoverOnLeftClickDown !none
cdsCoverOnLeftClick !none
cdsCoverOnLeftDoubleClick !none
cdsCoverOnMiddleClickDown !none
cdsCoverOnMiddleClick !none
cdsCoverOnMiddleDoubleClick !none
cdsCoverOnRightClickDown !none
cdsCoverOnRightClick !none
cdsCoverOnRightDoubleClick !none
cdsCoverOnDrop "$AudioPlayer$"
cdsCoverAlwaysOnTop false
cdsCoverImage "blank.png"
cdsCoverText "[winampSong]"
cdsCoverTopBorder 96
cdsCoverOnTextChange !_cds_setcurrent

cdsCurrent gives you the album information (in text form) and cdsCover gives you the album cover. make sure you make a blank.png and current.png (just make them the same color as your foobar playlist bg to make things easy) and put them in your LSImageFolder. also make sure you set the width/height for your album cover correctly.

next, in your mzscript file (most likely script.rc in your $ConfigDir$) add in this custom bang:

*script bang !_cds_setcurrent
*script exec !LabelInfoExport _cds_curtry "[line('$PersonalDir$foobar.rc',1)]"
*script gotoif ("%{_cds_curtry}" = "%{_cds_cur}") done
*script exec !varset _cds_cur "%{_cds_curtry}"
*script label try
*script exec !fileExist "%{_cds_cur}\$CDS_COVERFILE$" "!varset fileexist 1" "!varset fileexist 0"
*script gotoif ("%{fileexist}" = "0") upalevel
*script exec !LabelRefresh cdsCover cdsCoverImage "%{_cds_cur}\$CDS_COVERFILE$"
*script exec !LabelRefresh cdsCurrent cdsCurrentImage "current.png"
*script goto clean
*script label upalevel
*script exec !LabelInfoExport _cds_curtry "[beforeLast('%{_cds_[CODE]cur}','\')]"
*script gotoif ("%{_cds_curtry}" = "%{_cds_cur}") blank
*script exec !varset _cds_cur "%{_cds_curtry}"
*script goto try
*script label blank
*script exec !LabelRefresh cdsCover cdsCoverImage "blank.png"
*script exec !LabelRefresh cdsCurrent cdsCurrentImage "blank.png"
*script label clean
*script exec !LabelSetText cdsCurrent "[line('$PersonalDir$foobar.rc',2)]"
*script label done
*script ~bang

the important things to pay attention to are the following:

1) reference to $CDS_COVERFILE$. this evar must be defined or it won't know where to find the album cover. just make sure you set it in either evars.rc or theme.rc like this:

CDS_COVERFILE folder.png

2) references to certain lines in foobar.rc. this is where the interaction with foobar comes in.

foobar.rc is what i have set foo_text to output to. i have foobar.rc in my $PersonalDir$. you can have it output wherever you want, just make you tell foobar where you want to output the text and make sure litestep knows where to find it. this is how i have it set up:

PLAYING:

$left(%_path%,$add($len(%_path%),-1,$mul(-1,$len(%_filename_ext%))))$crlf()
[%artist%]<br>[%album%]$crlf()

ON QUIT:

*BLANK*
none<br>none

where *BLANK* means nothing... put no text there and just leave a blank line. also make sure foo_text is not set to write to text on stop, only have it write on the following events:

1) startup

2) quit

3) new track

4) pause

5) unpause

6) metadata

7) formatting strings

8) dynamic info

--------------------------------------------------------------------------------------

that is pretty much how it works.

PROS:

-album cover inside of foobar

CONS:

-album cover and info does not scroll

-does not dynamically resize with foobar

-only works well with a "one album at a time" playlist (which is how i listen to music)

-you might not be able to get it to work

i do not recommend trying this out if you have never used litestep. please do not email or pm me with questions on this... i'll do my best to troubleshoot in this thread if you want help, but i reallly don't want to be the support guy for this. i i didn't even write this script, a friend of mine did.

I'm not familiar with the plugins you are using so forgive me if I am wrong. But as far as I understand that is just displaying the cover art anywhere on the desktop and you happened to place it over your foobar.

You can accomplish the same thing by just using foo_looks and the coverart.ski skin for foo_looks.

Open up coverart.ski in the text editor. Modify the jpeg height and width dimensions to whatever you wish. Then just drag the coverart inside foobar when its activated. Have Always on top clicked in Components > Look > Show.

Edited by metal_termite

thinking again at that response, how retarded would it be to have all of that scripting, just to have it pasted over the window and not dynamic? hell, if i was going to do that, i could just have foo_text output the current album's directory then use filemaster.dll to show the folder.png. it's ignorant and just kind of stupid to think that there would be well over a page of scripting involved for something that could be done with about six lines of code. use your head.

EDIT

Where to get litestep mojo?

584763117[/snapback]

I am not mojo but The LiteStep Installer can be found here:

http://beyondconvention.net/ohussain/lsinstaller/

And a very nice skin can be found here:

http://nonstep.litestep.com/

Other skins:

http://www.litestep.net/

http://www.wincustomize.org

--

Neksus

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • Incredible deal gets you free NVMe 512GB SSD with AMD AM5 B850 motherboard for only $150 by Sayan Sen Earlier this week we covered the story of an interesting PC case wherein you can build two full-size computers inside it as in it can house and run an AMD and an Intel system simultaneously. Speaking of building PCs, these are hard times to make one for sure as prices are often very high except during flash sales or discounts. If you are in the market for a 1080p gaming PC then Nvidia's 8GB RTX 5060 Ti is currently on sale for just $330 and you get the latest James Bond game too, for free. Speaking of which, right now there is another incredible sale going on as we can get a free 512 GB NVMe SSD from TeamGroup in the form of the G50 alongside the purchase of an AMD B850 socket AM5 motherboard for only $150 (purchase link under the specs table down below). Getting an AM5 motherboard now in 2026 will be a wise investment for sure, especially since AMD confirmed its commitment to support the socket till at least 2029. The MSI PRO B850M-P WIFI is a micro-ATX motherboard that is compatible with AMD Ryzen 9000 series processors. Since it is AM5, the motherboard works with DDR5 memory and includes MSI’s Memory Boost technology, along with EXPO and XMP support. Connectivity features include built-in Wi-Fi 7 paired with a 5G LAN solution. The board offers a PCIe 5.0 M.2 slot with MSI’s EZ M.2 Shield Frozr II thermal solution, that is said to help maintain SSD performance by providing ample cooling against overheating. The technical specifications of the MSI PRO B850M-P WIFI motherboard are given in the table below: The free TeamGroup T-FORCE G50 NVMe SSD is a PCIe Gen4 and as such it promises to deliver sequential read speeds of up to 5,000 MB/s, helping accelerate game loading, file transfers, and everyday computing tasks. The SSD features an InnoGrit controller and SLC caching technology to support consistent performance. An ultra-thin, patented graphene heatsink is included to aid in heat dissipation. The NAND flash is based on TLC which means it has plenty of endurance up its sleeve. The random performance may not be as amazing as other drives with DRAM though. Still it should be very good since it can access system memory via HMB to use it as its DRAM cache. The technical specifications of the TeamGroup 512GB G50 NVMe SSD are given in the table below: Get it at the link below: MSI PRO B850M-P WIFI AM5 AMD motherboard + Team Group T-FORCE G50 512GB SSD (free gift): $149.99 (Sold and Shipped by Newegg US) This Newegg deal is US-specific and not available in other regions unless specified. This is a first-party seller link (at the time of article publishing); ensure that you also purchase from a first-party seller link only. If you don't like it or want to look at more options, check out the previous deals that we have covered, OR you can also visit Amazon US deals page. Get Prime (SNAP), Prime Video, Audible Plus or Kindle / Music Unlimited. Free for 30 days. As an Amazon Associate, we earn from qualifying purchases.
    • RapidRAW 1.5.7 by Razvan Serea RapidRAW is a beautiful, non-destructive, GPU‑accelerated RAW image editor designed for speed and simplicity. It uses a lightweight (~30 MB), efficient code base built with Rust, React and Tauri. Ideal for Lightroom workflows, it offers rich editing tools—exposure, contrast, highlights, shadows, whites/blacks, tone curves, HSL mixer, dehaze, vignetting, film grain, sharpening, clarity and noise reduction—processed in real-time on the GPU. Features include intuitive masking (brush, linear, radial, AI-powered subject and foreground detection), generative edit layers (via ComfyUI), 32‑bit precision, and full RAW format support through rawler. RapidRAW also provides library management (folder navigation, ratings, metadata, EXIF viewer), batch operations, export presets (JPEG/PNG/TIFF), sidecar editing (.rrdata), undo/redo history, customizable UI themes, smooth animations, resizable panels, and preset copy/paste. A modern high-performance Lightroom alternative with polished UX and creative tools, RapidRAW brings powerful photo editing to photographers seeking speed, responsive GPU feedback, and streamlined workflows. RapidRAW v1.5.7 release notes: This update serves as a direct follow-up to the core architectural migration introduced in v1.5.6. While the transition to a more modular state management system marked a significant step forward for RapidRAW's stability and long-term maintainability, it also introduced several edge cases and regressions within the library and editing workflows. This release focuses on addressing those issues, with a particular emphasis on a complete overhaul of library performance to ensure smooth and responsive browsing following the refactoring. It also resolves inconsistencies in the copy-and-paste workflow and expands RapidRAW's accessibility by adding support for eight additional languages. [full changelog] Download: RapidRAW 1.5.7 | ARM64 | ~20.0 MB (Open Source) View: RapidRAW Home Page | Screenshot | Other operating systems Get alerted to all of our Software updates on Twitter at @NeowinSoftware
    • Thank god they got rid of the disgusting looking sidebars, and the corner radius looks much better, too. Two things I hated on day one, and never got used to.
  • Recent Achievements

    • Very Popular
      Captain_Eric earned a badge
      Very Popular
    • One Month Later
      amusc earned a badge
      One Month Later
    • One Month Later
      DJC50PLUS earned a badge
      One Month Later
    • Week One Done
      DJC50PLUS earned a badge
      Week One Done
    • Proficient
      Eric Biran went up a rank
      Proficient
  • Popular Contributors

    1. 1
      +primortal
      504
    2. 2
      PsYcHoKiLLa
      223
    3. 3
      ATLien_0
      87
    4. 4
      Steven P.
      80
    5. 5
      +Edouard
      80
  • Tell a friend

    Love Neowin? Tell a friend!