So, after some relax time and a couple of other things I had to finish tonight, here it is, the "classic" version, with no ActionTimer and all. I took the liberty to modify things to better suit the adaptation and make them clearer / more reachable (no need for a Variables.inc in this one), but feel free to change (back) things as desired if you want. If you change them though, use some common sense logic to figure out what else you would need to do to keep things working (e.g. if you need to "split" the two Title+Artist fields into separate sliding "objects" you would have to create 2 Counter measures and change each one to correspond to the skin elements related to each field, as well as moving the mouse actions from the container to each field's meter; if you need to combine them and maybe append them to each other you would have to set one of the field's meters to aggregate the two, replace the Max() formula with the width of the aggregated meter and otherwise not change much, and so on). This works in my case with Winamp, as long as a song has those MP3 tags present (which is why I was under the impression that measures didn't have values earlier), hopefully will work in your case as well:chamlex wrote: ↑February 21st, 2020, 11:13 pm Yeah I get the dreaded spinning circle and when I open Task Manager it lists Rainmeter as not responding. Yeah the x and y puts it in the middle of my desktop where I have an area on my background that this would've fit perfectly. I just typed that in there versus putting it in Rainmeter screen. I assumed either would've worked.
The skin code
Code: Select all
[Variables]
@IncludeVariables=#@#Variables.inc
Player=Winamp
Color1=255,255,255,255
Color2=153,204,0,255
BoxWidth=233
BoxHeight=80
ContainerWidth=233
ContainerHeight=40
TitleWidth=0
ArtistWidth=0
ScrollingStep=10
SlidingStep=1
CurrentStep=(#SlidingStep#)
SlidingUpdate=24
[Rainmeter]
AccurateText=1
BackgroundMode=2
SolidColor=0,0,0,1
Update=#SlidingUpdate#
---Playback Measures---
[MeasureArtist]
Measure=NowPlaying
PlayerName=#Player#
PlayerType=Artist
RegExpSubstitute=1
Substitute="^$":"No Artist"
UpdateDivider=(1000/#SlidingUpdate#)
[MeasureTitle]
Measure=NowPlaying
PlayerName=[MeasureArtist]
PlayerType=Title
RegExpSubstitute=1
Substitute="^$":"No Title"
UpdateDivider=(1000/#SlidingUpdate#)
[MeasureAlbum]
Measure=NowPlaying
PlayerName=[MeasureArtist]
PlayerType=Album
RegExpSubstitute=1
Substitute="^$":"No Album"
UpdateDivider=(1000/#SlidingUpdate#)
[MeasureStateButton]
Measure=NowPlaying
PlayerName=[MeasureArtist]
PlayerType=State
RegExpSubstitute=1
Substitute="0":"#@#Play.png","1":"#@#Pause.png","2":"#@#Play.png"
UpdateDivider=(1000/#SlidingUpdate#)
---Animation Measures---
[MeasureCounter]
Group=CounterGroup
Measure=Calc
Formula=((MeasureCounter<0)?(#ContainerWidth#+#TextWidth#):((MeasureCounter>(#ContainerWidth#+#TextWidth#))?(0):(MeasureCounter+#CurrentStep#)))
OnUpdateAction=[!SetOptionGroup SlidingGroup X (#ContainerWidth#-[MeasureCounter])][!UpdateMeterGroup "SlidingGroup"][!RedrawGroup "SlidingGroup"]
IfCondition=(MeasureCounter<0)
IfTrueAction=[!UpdateMeterGroup "SlidingGroup"][!UpdateMeasure "MeasureCounter"]
IfCondition2=(MeasureCounter>(#ContainerWidth#+#TextWidth#))
IfTrueAction2=[!DisableMeasure "MeasureCounter"][!UpdateMeasure "MeasureCounter"][!EnableMeasure "MeasureCounter"][!UpdateMeasure "MeasureCounter"]
IfConditionMode=1
DynamicVariables=1
---Animation Meters---
[MeterBackground]
Meter=Shape
Shape=Rectangle 0,0,#BoxWidth#,#BoxHeight# | StrokeWidth 0 | Stroke Color 255,64,32 | Fill Color 32,32,32,128
UpdateDivider=-1
[MeterContainer]
Meter=Shape
Shape=Rectangle 0,0,#ContainerWidth#,#ContainerHeight# | StrokeWidth 0 | Stroke Color 255,64,32 | Fill Color 32,32,32,128
UpdateDivider=-1
MouseOverAction=[!PauseMeasure "MeasureCounter"]
MouseLeaveAction=[!UnpauseMeasure "MeasureCounter"]
MouseScrollUpAction=[!SetVariable CurrentStep (-#ScrollingStep#)][!UnpauseMeasure "MeasureCounter"][!UpdateMeasureGroup "CounterGroup"][!PauseMeasure "MeasureCounter"][!SetVariable CurrentStep (#SlidingStep#)]
MouseScrollDownAction=[!SetVariable CurrentStep (#ScrollingStep#)][!UnpauseMeasure "MeasureCounter"][!UpdateMeasureGroup "CounterGroup"][!PauseMeasure "MeasureCounter"][!SetVariable CurrentStep (#SlidingStep#)]
MiddleMouseUpAction=[!UnpauseMeasure "MeasureCounter"][!UpdateMeasure "MeasureCounter"][!DisableMeasure "MeasureCounter"][!UpdateMeasure "MeasureCounter"][!EnableMeasure "MeasureCounter"][!UpdateMeasure "MeasureCounter"][!PauseMeasure "MeasureCounter"]
[MeterTitle]
Group=SlidingGroup
Meter=String
FontColor=#Color1#
FontFace=Arial
FontSize=14
MeasureName=MeasureTitle
Container=MeterContainer
X=(#ContainerWidth#)
Y=0
Text="%1"
AntiAlias=1
DynamicVariables=1
UpdateDivider=(1000/#SlidingUpdate#)
OnUpdateAction=[!SetVariable TitleWidth [MeterTitle:W]]
[MeterArtist]
Group=SlidingGroup
Meter=String
FontColor=#Color1#
FontFace=Arial
FontSize=14
Container=MeterContainer
MeasureName=MeasureArtist
X=(#ContainerWidth#)
Y=20
Text="%1"
AntiAlias=1
DynamicVariables=1
OnUpdateAction=[!SetVariable ArtistWidth [MeterArtist:W]][!SetVariable TextWidth (Max(#TitleWidth#,#ArtistWidth#))]
---Button Meters---
[MeterPrevious]
Meter=Image
ImageName=#@#Previous.png
X=57
Y=46
W=26
AntiAlias=1
ImageTint=#Color2#
SolidColor=0,0,0,1
LeftMouseUpAction=[!CommandMeasure "MeasureArtist" "Previous"]
UpdateDivider=(1000/#SlidingUpdate#)
[MeterPlayPause]
Meter=Image
ImageName=[MeasureStateButton]
X=103
Y=46
W=26
AntiAlias=1
SolidColor=0,0,0,1
ImageTint=#Color2#
DynamicVariables=1
LeftMouseUpAction=[!CommandMeasure "MeasureArtist" "PlayPause"]
UpdateDivider=(1000/#SlidingUpdate#)
[MeterNext]
Meter=Image
ImageName=#@#Next.png
X=149
Y=46
W=26
AntiAlias=1
ImageTint=#Color2#
SolidColor=0,0,0,1
LeftMouseUpAction=[!CommandMeasure "MeasureArtist" "Next"]
UpdateDivider=(1000/#SlidingUpdate#)
I'll let balala and others to provide a possible ActionTimer version, if they feel like it. As long as that version is properly done and avoids recursion and endless animation (which this version doesn't have to), you should be fine with both. I'll be a lil' busy during the first part of tomorrow, but let us know how it goes with this code anyway. Cheers!