Later than needed, but since you asked, this is exactly how the code (still, till it gets deleted) looks on my side:
Code: Select all
[Variables]
PlayerName=Winamp
FontName=Segoe UI
FontColor=255,255,255,255
AnimationSpeed=32
TrackStep=1
ArtistStep=1
AlbumStep=1
[Rainmeter]
Update=#AnimationSpeed#
---Measures---
[MeasureTrack]
Measure=Plugin
Plugin=NowPlaying
PlayerName=#PlayerName#
PlayerType=Title
Substitute="":""
[MeasureArtist]
Measure=Plugin
Plugin=NowPlaying
PlayerName=[MeasureTrack]
PlayerType=Artist
Substitute="":""
[MeasureAlbum]
Measure=Plugin
Plugin=NowPlaying
PlayerName=[MeasureTrack]
PlayerType=Album
Substitute="":""
[TrackX]
Measure=Calc
Formula=([M_Track:W]-[Container:W]>0?TrackX+#TrackStep#:TrackX)
IfCondition=(TrackX<0)||(TrackX>[M_Track:W]-[Container:W])
; Reset Pos Variant: IfTrueAction=[!DisableMeasure TrackX][!UpdateMeasure TrackX][!EnableMeasure TrackX]
; Ping Pong Variant:
IfTrueAction=[!SetVariable TrackStep (-#TrackStep#)]
; Perpetual Variant: IfCondition=(TrackX<0)||(TrackX>[M_Track:W]+[Container:W]) and X=([Container:W]-[TrackX])
IfTrueAction=[!DisableMeasure TrackX][!UpdateMeasure TrackX][!EnableMeasure TrackX]
IfConditionMode=1
DynamicVariables=1
[ArtistX]
Measure=Calc
Formula=([M_Artist:W]-[Container:W]>0?ArtistX+#ArtistStep#:ArtistX)
IfCondition=(ArtistX<0)||(ArtistX>[M_Artist:W]-[Container:W])
; Reset Pos Variant: IfTrueAction=[!DisableMeasure ArtistX][!UpdateMeasure ArtistX][!EnableMeasure ArtistX]
; Ping Pong Variant:
IfTrueAction=[!SetVariable ArtistStep (-#ArtistStep#)]
IfConditionMode=1
DynamicVariables=1
[AlbumX]
Measure=Calc
Formula=([M_Album:W]-[Container:W]>0?AlbumX+#AlbumStep#:AlbumX)
IfCondition=(AlbumX<0)||(AlbumX>[M_Album:W]-[Container:W])
; Reset Pos Variant: IfTrueAction=[!DisableMeasure AlbumX][!UpdateMeasure AlbumX][!EnableMeasure AlbumX]
; Ping Pong Variant:
IfTrueAction=[!SetVariable AlbumStep (-#AlbumStep#)]
IfConditionMode=1
DynamicVariables=1
---Meters---
[M_Shape]
Meter=Shape
Shape=Rectangle 2,2,394,75,2 | Fill Color 0,0,0,128 | StrokeWidth 1 | Stroke Color 255,255,255,255
[Container]
Meter=Image
X=172
W=50
H=75
SolidColor=255,255,255,255
DynamicVariables=1
[M_TRACK]
Meter=String
MeasureName=MeasureTrack
X=(-[TrackX])
Y=1
FontFace=#FONTNAME#
FontColor=#FONTCOLOR#
FontSize=13
Text=%1
Group=Marquee
Container=Container
AntiAlias=1
DynamicVariables=1
[M_ARTIST]
Meter=String
MeasureName=MeasureArtist
X=(-[ArtistX])
Y=20r
FontFace=#FONTNAME#
FontColor=#FONTCOLOR#
FontSize=12
Text=%1
TooltipText=%1
Group=Marquee
Container=Container
AntiAlias=1
DynamicVariables=1
[M_ALBUM]
Meter=String
MeasureName=MeasureAlbum
X=(-[AlbumX])
Y=20r
FontFace=#FONTNAME#
FontColor=#FONTCOLOR#
FontSize=12
Text=%1
Group=Marquee
Container=Container
AntiAlias=1
DynamicVariables=1
EDIT: Well, after trying some more, I do get some issues, but only on some track changes like you said. A refresh fixes the issue, but of course it shouldn't be needed. Most likely the on change idea is close to a working approach, since after all, it has to do with some values being "locked" in a certain state when chenging the playing track. I might take a look at it tomorrow and see if there is a better alternative.
I was born an elder, just without a tribe... till I found the Rainmeter one.