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

    • Apple is expanding Private Cloud Compute beyond its own data centers by Pradeep Viswanathan At WWDC 2026, as part of the improved Apple Intelligence capabilities, Apple today announced that it is expanding Private Cloud Compute (PCC), its privacy-focused cloud infrastructure for Apple Intelligence, beyond its own data centers for the first time. Private Cloud Compute was designed to handle Apple Intelligence requests that are too complex to run fully on-device. The PCC system does not store user data and does not allow Apple or anyone else to access user requests. Last year, Apple also expanded its Security Bounty program with rewards of up to $1 million for researchers who could find serious vulnerabilities in PCC. Until now, Apple's PCC data centers were using Apple's own silicon. As part of the expansion, Apple is working with Google and NVIDIA to run new Apple Intelligence workloads on Google Cloud systems powered by NVIDIA GPUs. Apple will be using this new infrastructure to execute more demanding AI tasks while maintaining the same privacy and security guarantees of PCC. The new implementation uses NVIDIA Confidential Computing with NVIDIA GPUs, Intel CPUs with TDX, and Google’s Titan chip. Apple says it has worked with Google to build additional protections beyond a traditional confidential computing deployment. Despite the expansion to third-party data centers, Apple claims that its core PCC requirements remain unchanged, including stateless computation, no privileged runtime access, non-targetability, and verifiable transparency. The company highlighted that it will continue to control the PCC software stack, and Apple devices will only trust PCC software that has been cryptographically approved by Apple. To take security to the next level, Apple mentioned that it is maintaining an append-only ledger of Google Cloud hardware that is part of the PCC fleet. The company claims this will help reduce the risk of supply chain attacks. In addition to AI infrastructure, Apple also worked with Google to use technologies behind the Gemini family of models to build the next generation of Apple Foundation Models to power Apple Intelligence features across on-device and cloud workloads. As expected, for more demanding AI tasks like agentic tool use and complex reasoning, Apple will rely on the expanded PCC infrastructure running on Google Cloud. The expansion of PCC on Google Cloud will gradually ramp toward the full set of protections during the summer preview period. As before, Apple will also publish binaries for public inspection, provide research tooling, and give researchers access to live PCC nodes in research mode through the Apple Security Bounty Program.
    • my problem with outlook (new) is that it connects only to outlook.com. all connections to external providers goes through there. Got your mail server and want to use imap directly? no way... it adds a connector on outlook.com. last bug; if your email on an external provider if the same as principal email of your microsoft account, it doesn't work...
    • It's the only reason I finally have an iPhone (for work) and enjoy using it so much that I'm tempted to move from android next time I need to replace my own device
    • So is Russia, China, Iran, North Korea, just to mention a few. What's your point? Everyone is a threat from their enemies' perspective. I'd say that Israel is only a threat to their immediate enemies like Hamas, Hezbollah and the Iranian regime, not to anyone else.
    • The government is not the good guy either. You propose 99% of people require that the government overreach and govern their freedom of information and privacy, while ignoring the government is made up 100% of people, of which 99% are (as you described) brain dead. You can't have both. The reality is Signal is absolutely right and the government is doing what it has always done. Ignoring that we are their boss and grabbing all the power they possibly can to make sure we aren't. Your (societies) ###### parenting is not reason enough as to why I can't have a safe platform for my data/information. Thinking the government is helping is precisely what they are targeting psychologically to take suckers like you for a ride. "Think of the children" was, has, is, and will always be a mechanism of control. In the rare occasion it's actually essential the mass consensus has always been there and it doesn't become a debate.
  • 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
      508
    2. 2
      PsYcHoKiLLa
      222
    3. 3
      ATLien_0
      92
    4. 4
      +Edouard
      86
    5. 5
      Steven P.
      81
  • Tell a friend

    Love Neowin? Tell a friend!