Something I've been working on:
Top Section:
$font(Tahoma,7,shadow,233-233-233)
// Background
$imageabs(,,images\backdrop.png,)
$imageabs(116,,images\backdrop.png,)
$imageabs(232,,images\backdrop.png,)
$imageabs(348,,images\backdrop.png,)
// Labels
$alignabs(9,,%_width%,%_height%,,)$rgb(233,233,233)$char(91)$rgb(140,186,236)Title$rgb(233,233,233)$char(93)$rgb():
$alignabs(5,10,%_width%,%_height%,,)$rgb(233,233,233)$char(91)$rgb(140,186,236)Artist$rgb(233,233,233)$char(93)$rgb():
$if($strcmp($left(%path%,7),http$char(58)$char(47)$char(47)),
$alignabs(17,20,%_width%,%_height%,,)$rgb(233,233,233)$char(91)$rgb(140,186,236)IP$rgb(233,233,233)$char(93)$rgb():
$alignabs(10,30,%_width%,%_height%,,)$rgb(233,233,233)$char(91)$rgb(140,186,236)Port$rgb(233,233,233)$char(93)$rgb():
,
$alignabs(,20,%_width%,%_height%,,)$rgb(233,233,233)$char(91)$rgb(140,186,236)Album$rgb(233,233,233)$char(93)$rgb():
$alignabs(4,30,%_width%,%_height%,,)$rgb(233,233,233)$char(91)$rgb(140,186,236)Track$rgb(233,233,233)$char(93)$rgb():
)
$alignabs($sub(%_width%,118),,%_width%,%_height%,,)$rgb(233,233,233)$char(91)$rgb(140,186,236)Codec$rgb(233,233,233)$char(93)$rgb():
$alignabs($sub(%_width%,130),10,%_width%,%_height%,,)$rgb(233,233,233)$char(91)$rgb(140,186,236)Channels$rgb(233,233,233)$char(93)$rgb():
$alignabs($sub(%_width%,119),20,%_width%,%_height%,,)$rgb(233,233,233)$char(91)$rgb(140,186,236)Bitrate$rgb(233,233,233)$char(93)$rgb():
$alignabs($sub(%_width%,127),30,%_width%,%_height%,,)$rgb(233,233,233)$char(91)$rgb(140,186,236)Samples$rgb(233,233,233)$char(93)$rgb():
// Data
$if(%isplaying%,
$alignabs(45,,%_width%,%_height%,,)[%title%]
$alignabs(45,10,%_width%,%_height%,,)[%artist%]
$alignabs($sub(%_width%,74),,%_width%,%_height%,,)$if2(%codec% ,)$if2($char(40)$caps($info(encoding))$char(41),)
$alignabs($sub(%_width%,74),10,%_width%,%_height%,,)$if2($if($info(mp3_stereo_mode),$caps($info(mp3_stereo_mode)),$info(channels)),)
$alignabs($sub(%_width%,74),20,%_width%,%_height%,,)$if2(%bitrate%kbps ,)$if($strcmp($upper($info(codec)),MP3),$if2($info(extrainfo),CBR),)
$alignabs($sub(%_width%,74),30,%_width%,%_height%,,)$if2($div(%samplerate%,1000)$ifequal($div($mod(%samplerate%,1000),100),0,,.$div($mod(%samplerate%,1000),100))KHz,)
$if($strcmp($left(%path%,7),http$char(58)$char(47)$char(47)),
$alignabs(45,20,%_width%,%_height%,,)$substr(%path%,8,$if2($add($strrchr($substr(%path%,8,$len(%path%)),:),6),$len(%path%)))
$alignabs(45,30,%_width%,%_height%,,)$if($strcmp($strchr(%path%,:),$strrchr(%path%,:)),$rgb(128,128,128)n/a,$substr(%path%,$add($strrchr(%path%,:),1),$sub($len(%path%),1)))
$alignabs($div($sub(%_width%,$calcwidth(%path%)),2),50,%_width%,%_height%,,)$if2(%url%,%path%)
,
$alignabs(45,20,%_width%,%_height%,,)[%album%][ $char(40)%date%$char(41)]
$alignabs(45,30,%_width%,%_height%,,)[$char(91)%cdid%$char(93) ][Track %tracknumber% of %totaltracks%]
$alignabs($div($sub(%_width%,$calcwidth(%filename_ext%)),2),50,%_width%,%_height%,,)%filename_ext%
)
,)
// Dividers
$font(,,normal,)
$puts(divider.half,$repeat(-,$div(%_width%,6)))
$puts(divider,$transition($get(divider.half),$rgb(10,36,106),$rgb(233,233,233))$transition($get(divider.half),$rgb(233,233,233),$rgb(10,36,106)))
$alignabs(2,40,%_width%,%_height%,,)$get(divider)
$alignabs(2,60,%_width%,%_height%,,)$get(divider)
//Overlay
$imageabs(0,0,images\black.top.left.png,)
$imageabs($sub(%_width%,50),0,images\black.top.right.png,)
Bottom Section:
$font(Tahoma,7,shadow,233-233-233)
// Background
// Background
$imageabs(,,images\backdrop.png,)
$imageabs(116,,images\backdrop.png,)
$imageabs(232,,images\backdrop.png,)
$imageabs(348,,images\backdrop.png,)
// Labels
$if($strcmp($left(%path%,7),http$char(58)$char(47)$char(47)),
,
$alignabs(25,$sub(%_height%,40),%_width%,%_height%,,)$rgb(233,233,233)$char(91)$rgb(140,186,236)Rating$rgb(233,233,233)$char(93)$rgb(233,233,233):
$alignabs($add($div(%_width%,2),20),$sub(%_height%,40),%_width%,%_height%,,)$rgb(233,233,233)$char(91)$rgb(140,186,236)Tags$rgb(233,233,233)$char(93)$rgb(233,233,233):
)
// Data
$if(%isplaying%,
$if($strcmp($left(%path%,7),http$char(58)$char(47)$char(47)),
,
$alignabs(85,$sub(%_height%,40),%_width%,%_height%,,)
$if(%rating%,$char(40)%rating%$char(41) $progress2(%rating%,10,10,$rgb()$char(9733) ,$rgb(128,128,128)$char(9734) )
,$rgb(128,128,128)~ Song Not Rated ~)
$alignabs($add($div(%_width%,2),60),$sub(%_height%,40),%_width%,%_height%,,)$if($strstr($info(tagtype),id3v1),$rgb(0,128,255)$char(10004)$rgb(233,233,233),$rgb(255,0,128)$char(10008)$rgb(128,128,128)) ID3v1
$alignabs($add($div(%_width%,2),110),$sub(%_height%,40),%_width%,%_height%,,)$if($strstr($info(tagtype),id3v2),$rgb(0,128,255)$char(10004)$rgb(233,233,233),$rgb(255,0,128)$char(10008)$rgb(128,128,128)) ID3v2
$alignabs($add($div(%_width%,2),160),$sub(%_height%,40),%_width%,%_height%,,)$if($strstr($info(tagtype),apev2),$rgb(0,128,255)$char(10004)$rgb(233,233,233),$rgb(255,0,128)$char(10008)$rgb(128,128,128)) APEv2
)
,)
// Progress Bar
$if($strcmp($left(%path%,7),http$char(58)$char(47)$char(47)),
,
$alignabs(2,$sub(%_height%,18),%_width%,%_height%,,)$if(%_isplaying%,Progress $rgb(128,128,128)$char(40)$rgb(233,233,233)$div($mul(%_time_elapsed_seconds%,100),%_time_total_seconds%)'%'$rgb(128,128,128)$char(41)$rgb(233,233,233):)
$alignabs($sub(%_width%,$add($calcwidth(%playback_time% $char(47) %length%),4)),$sub(%_height%,18),%_width%,%_height%,,)$if(%playback_time%,%playback_time%$if2($rgb(128,128,128) $char(47) $rgb(233-233-233)%length%,),)$char(10)
$alignabs(80,$sub(%_height%,18),%_width%,%_height%,,)$progress2(%playback_time_seconds%,%length_seconds%,$sub($div(%_width%,$calcwidth($char(9679))),30),$rgb(0,128,255)$char(9679),$rgb(10,36,106)$char(9679))
$puts(crosshair.x,$add($muldiv($muldiv(100,%playback_time_seconds%,%length_seconds%),$mul($calcwidth($char(9679)),$sub($div(%_width%,$calcwidth($char(9679))),30)),100),78))
$alignabs($get(crosshair.x),$sub(%_height%,18),%_width%,%_height%,,)$rgb(166,202,240)$char(9679)
$alignabs($sub($get(crosshair.x),5),$sub(%_height%,23),%_width%,%_height%,,)$rgb(166,202,240)$char(9700)
$alignabs($add($get(crosshair.x),5),$sub(%_height%,23),%_width%,%_height%,,)$rgb(166,202,240)$char(9701)
$alignabs($sub($get(crosshair.x),5),$sub(%_height%,13),%_width%,%_height%,,)$rgb(166,202,240)$char(9699)
$alignabs($add($get(crosshair.x),5),$sub(%_height%,13),%_width%,%_height%,,)$rgb(166,202,240)$char(9698)
)
// Dividers
$font(,,normal,)
//$puts(divider,$repeat(-,$div(%_width%,3)))
$puts(divider.half,$repeat(-,$div(%_width%,6)))
$puts(divider,$transition($get(divider.half),$rgb(10,36,106),$rgb(233,233,233))$transition($get(divider.half),$rgb(233,233,233),$rgb(10,36,106)))
$alignabs(2,$sub(%_height%,30),%_width%,%_height%,,)$get(divider)
$alignabs(2,$sub(%_height%,50),%_width%,%_height%,,)$get(divider)
$alignabs($div(%_width%,2),$sub(%_height%,40),%_width%,%_height%,,)$rgb(233,233,233)||
//Overlay
$imageabs(0,$sub(%_height%,100),images\black.bottom.left.png,)
$imageabs($sub(%_width%,50),$sub(%_height%,100),images\black.bottom.right.png,)
Images Used:
backdrop.png, black.top.left.png, black.top.right.png, black.bottom.left.png, black.bottom.right.png
Everything seems to be going according to plan however the center panel, which is just a standard specturm analyser panel, appears to pause for a split second when the other panels do their refresh every second. Is this because I have many other trackinfo plugins running too? Is this because I'm developing this in a tab? Or am I simply beginning to overload the plugin? I've noticed that if I comment out the transition dividers the performance is a bit better.
EDIT: Cleaned up code, removed transition on dividers, significantly reduced resource consumption.
EDIT: Added transitions again and removed divider shadow. Also updated backdrop image to a smaller tiled version.