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

    • Just for anyone reading, AdGuard (the free, standalone MV3 extension) is quite good now, a direct competitor to uBlock Origin Lite and much more built-out than it.
    • Microsoft Edge 149.0.4022.62 by Razvan Serea Microsoft Edge is a super fast and secure web browser from Microsoft. It works on almost any device, including PCs, iPhones and Androids. It keeps you safe online, protects your privacy, and lets you browse the web quickly. You can even use it on all your devices and keep your browsing history and favorites synced up. Built on the same technology as Chrome, Microsoft Edge has additional built-in features like Startup boost and Sleeping tabs, which boost your browsing experience with world class performance and speed that are optimized to work best with Windows. Microsoft Edge security and privacy features such as Microsoft Defender SmartScreen, Password Monitor, InPrivate search, and Kids Mode help keep you and your loved ones protected and secure online. Microsoft Edge has features to keep both you and your family protected. Enable content filters and access activity reports with your Microsoft Family Safety account and experience a kid-friendly web with Kids Mode. The new Microsoft Edge is now compatible with your favorite extensions, so it’s easy to personalize your browsing experience. Download: Microsoft Edge (64-bit) | 193.0 MB (Freeware) Download: Microsoft Edge (32-bit) | 170.0 MB Download: Microsoft Edge (ARM64) | 188.0 MB View: Microsoft Edge Website | Release History Get alerted to all of our Software updates on Twitter at @NeowinSoftware
    • Yeah, when I saw that, I wanted to find the nearest nose. You can't find a good nose these days when you need one.
    • Anthropic launches Claude Fable 5, a state-of-the-art AI model that beats OpenAI's GPT-5.5 by Pradeep Viswanathan Back in April, Anthropic announced Claude Mythos Preview, a frontier model with state-of-the-art coding capabilities. Due to the cybersecurity implications that would occur due to the availability of such a powerful model, Anthropic made it available to only a select set of companies around the world. The company's plan was to prepare appropriate guardrails before releasing such a powerful model to everyone. Now, after nearly two months, Anthropic announced Claude Fable 5, its most capable AI model yet for general users. The company also announced Claude Mythos 5, the same underlying model as Fable 5, but with safeguards lifted, making it more suitable for selected cybersecurity and biology use cases. Claude Fable 5 sits a tier above its Opus models and it beats most other generally available models across areas including software engineering, knowledge work, vision, scientific research, and long-running autonomous tasks. To prevent model misuse, when Claude Fable 5 detects certain requests related to cybersecurity, biology, chemistry, or model distillation, the request will be routed to the Claude Opus 4.8 model. Anthropic claims that these safeguards trigger in less than 5% of sessions on average. However, for large organizations working on critical software, Claude Mythos 5 can be availed through Project Glasswing. Later, Anthropic has plans to expand access through a broader trusted access program. As you can notice in the benchmarks above, Fable 5 and Mythos 5 are state-of-the-art on most key AI benchmarks and they are well ahead of OpenAI's frontier model, GPT-5.5. For example, Fable 5 is the new state-of-the-art model for vision tasks. Also, Mythos 5 has the strongest cybersecurity capabilities of any model in the world. Claude Fable 5 and Claude Mythos 5 are priced at $10 per million input tokens and $50 per million output tokens, which is less than half the price of Claude Mythos Preview. Another big change is that Anthropic is making a change to the way they handle business customer data for both Fable 5 and Mythos 5 models. The company will now require 30-day retention for all traffic on both first- and third-party surfaces. Anthropic promises that it won't use the data to train Claude models, instead it will use it against complex and novel attacks. Claude Fable 5 is available today on the Claude API and consumption-based Enterprise plans. It is also included at no extra cost for Pro, Max, Team, and seat-based Enterprise customers from today through June 22. After that, users on those plans will need usage credits to continue using Fable 5, unless Anthropic extends the included access window based on capacity. Developers can access Fable 5 through the Claude API using the claude-fable-5 model name.
  • Recent Achievements

    • Week One Done
      rubentuben8 earned a badge
      Week One Done
    • Week One Done
      ARaclen earned a badge
      Week One Done
    • One Year In
      jojodbn earned a badge
      One Year In
    • One Month Later
      jojodbn earned a badge
      One Month Later
    • Week One Done
      jojodbn earned a badge
      Week One Done
  • Popular Contributors

    1. 1
      +primortal
      525
    2. 2
      PsYcHoKiLLa
      232
    3. 3
      +Edouard
      124
    4. 4
      ATLien_0
      88
    5. 5
      Steven P.
      83
  • Tell a friend

    Love Neowin? Tell a friend!