If I could get help with one more thing I would really appreciate it. I want to add a smooth scrolling effect to song titles/artists if they are too long/exceed a maximum width size, like in the clearskin skin. I tried to use the latest ver. (6.0 )of clearskin (https://github.com/redsaph/cleartext/releases/tag/6.0), but with my very limited rainmeter coding knowledge I just gave myself a headache and lost many hours of my life instead realized that sometimes you just gotta get help from the experts instead
I've been reading old threads on this problem and came across threads that you and balala have been helping in. you guys have been helping so many members since years back it's kinda insane! so thank you once again for all your help to community members over the years
Well, even us have to spend time on these things, so at times, if the matter was already discussed and reasonable results have already been achieved, we try to not reinvent the wheel every time a similar objective is mentioned, by providing some useful links, like this one: https://forum.rainmeter.net/viewtopic.php?t=31790
There, the structure is already build on a basic level, you could even leave only the 1st marquee related code to make it more compact and to understand it better. Once you do, you only need to apply it to your code, by copy pasting the measures doing the work, using similar variables as the X position in the desired meters, and obviously adjusting various section or variable names correspodingly. If after trying - at least on a rudimentar level, to see something happening - you still can't manage it, further help could be provided. Remember, "porting" something from one skin to another is not about copy pasting everything, but about "cherry picking" and copy pasting / adjusting only what you need.
Personally, I'm also a bit busy these days so I can't guarantee immediate assistance, but you might be able to get the idea. For the record, it's only about altering the "X" position of the meters displaying the desired texts, via an ActionTimer plugin animation, and also "masking" / "hiding" the undesired parts of the marquee via a container meter: https://docs.rainmeter.net/manual/plugins/actiontimer/ https://docs.rainmeter.net/manual/meters/general-options/container/ It might seem complicated at first, but if you simplify the problem, it really isn't. Once you get one thing understood and working, the rest can follow.
Here are 2 other variations of the above example that I adjusted to help folks with similar objectives over time:
[Variables]PlayerName=WinampFontName=Segoe UIFontColor=255,255,255,255AnimationSpeed=25TrackStep=1ArtistStep=1AlbumStep=1[Rainmeter]Update=#AnimationSpeed#---Measures---[MeasureTrack]Group=InfosMeasure=PluginPlugin=NowPlayingPlayerName=#PlayerName#PlayerType=TitleSubstitute="":""; If using the parent - child measure model for NowPlaying below (i.e. PlayerName=[ParentMeasure]), actions should be taken on entire groups in this parent measure; If using the individual measure model for NowPlaying below (i.e. PlayerName=#PlayerVariable#), actions must be taken on individual sections in the measures belowOnChangeAction=[!SetVariable TrackStep 1][!SetVariable ArtistStep 1][!SetVariable AlbumStep 1][!DisableMeasureGroup Positions][!UpdateMeasureGroup Positions][!UpdateMeterGroup Marquees][!Redraw][!EnableMeasureGroup Positions][MeasureArtist]Group=InfosMeasure=PluginPlugin=NowPlayingPlayerName=[MeasureTrack]PlayerType=ArtistSubstitute="":""[MeasureAlbum]Group=InfosMeasure=PluginPlugin=NowPlayingPlayerName=[MeasureTrack]PlayerType=AlbumSubstitute="":""; To temporarily stop text movement at the time of minimal and maximal positioning or inverting the step in the IfTrueAction:; - Reset Pos Variant: [!PauseMeasure ...][!Delay ...][!UnpauseMeasure ...][!DisableMeasure ...][!UpdateMeasure ...][!PauseMeasure ...][!Delay ...][!UnpauseMeasure ...][!EnableMeasure ...]; - Ping Pong Variant: [!PauseMeasure ...][!Delay ...][!UnpauseMeasure ...][!SetVariable ... (-...)]; - Perpetual Variant: is supposed to move forever, but pausing and unpausing the relevant measures can still be used in the mouse actions from a meter[TrackX]Group=PositionsMeasure=Calc; Formula - Reset Pos Variant: Formula=([M_Track:W]-[Container:W]>0?TrackX+#TrackStep#:TrackX); Formula - Ping Pong Variant: Formula=([M_Track:W]-[Container:W]>0?TrackX+#TrackStep#:TrackX); Formula - Perpetual Variant: Formula=([M_Track:W]-[Container:W]>0?TrackX+#TrackStep#:[Container:W]); IfCondition - Reset Pos Variant: IfCondition=(TrackX<0)||(TrackX>[M_Track:W]-[Container:W]); IfCondition - Ping Pong Variant: IfCondition=(TrackX<0)||(TrackX>[M_Track:W]-[Container:W]); IfCondition - Perpetual Variant: IfCondition=(TrackX<0)||(TrackX>[M_Track:W]+[Container:W]); IfTrueAction - Reset Pos Variant: IfTrueAction=[!DisableMeasure TrackX][!UpdateMeasure TrackX][!EnableMeasure TrackX]; IfTrueAction - Ping Pong Variant: IfTrueAction=[!SetVariable TrackStep (-#TrackStep#)]; IfTrueAction - Perpetual Variant: IfTrueAction=[!DisableMeasure TrackX][!UpdateMeasure TrackX][!EnableMeasure TrackX]IfConditionMode=1DynamicVariables=1[ArtistX]Group=PositionsMeasure=Calc; Formula - Reset Pos Variant: Formula=([M_Artist:W]-[Container:W]>0?ArtistX+#ArtistStep#:ArtistX); Formula - Ping Pong Variant: Formula=([M_Artist:W]-[Container:W]>0?ArtistX+#ArtistStep#:ArtistX); Formula - Perpetual Variant: Formula=([M_Artist:W]-[Container:W]>0?ArtistX+#ArtistStep#:[Container:W]); IfCondition - Reset Pos Variant: IfCondition=(ArtistX<0)||(ArtistX>[M_Artist:W]-[Container:W]); IfCondition - Ping Pong Variant: IfCondition=(ArtistX<0)||(ArtistX>[M_Artist:W]-[Container:W]); IfCondition - Perpetual Variant: IfCondition=(ArtistX<0)||(ArtistX>[M_Artist:W]+[Container:W]); IfTrueAction - Reset Pos Variant: IfTrueAction=[!DisableMeasure ArtistX][!UpdateMeasure ArtistX][!EnableMeasure ArtistX]; IfTrueAction - Ping Pong Variant: IfTrueAction=[!SetVariable ArtistStep (-#ArtistStep#)]; IfTrueAction - Perpetual Variant: IfTrueAction=[!DisableMeasure ArtistX][!UpdateMeasure ArtistX][!EnableMeasure ArtistX]IfConditionMode=1DynamicVariables=1[AlbumX]Group=PositionsMeasure=Calc; Formula - Reset Pos Variant: Formula=([M_Album:W]-[Container:W]>0?AlbumX+#AlbumStep#:AlbumX); Formula - Ping Pong Variant: Formula=([M_Album:W]-[Container:W]>0?AlbumX+#AlbumStep#:AlbumX); Formula - Perpetual Variant: Formula=([M_Album:W]-[Container:W]>0?AlbumX+#AlbumStep#:[Container:W]); IfCondition - Reset Pos Variant: IfCondition=(AlbumX<0)||(AlbumX>[M_Album:W]-[Container:W]); IfCondition - Ping Pong Variant: IfCondition=(AlbumX<0)||(AlbumX>[M_Album:W]-[Container:W]); IfCondition - Perpetual Variant: IfCondition=(AlbumX<0)||(AlbumX>[M_Album:W]+[Container:W]); IfTrueAction - Reset Pos Variant: IfTrueAction=[!DisableMeasure AlbumX][!UpdateMeasure AlbumX][!EnableMeasure AlbumX]; IfTrueAction - Ping Pong Variant: IfTrueAction=[!SetVariable AlbumStep (-#AlbumStep#)]; IfTrueAction - Perpetual Variant: IfTrueAction=[!DisableMeasure AlbumX][!UpdateMeasure AlbumX][!EnableMeasure AlbumX]IfConditionMode=1DynamicVariables=1---Meters---[M_Shape]Meter=ShapeShape=Rectangle 2,2,394,75,2 | Fill Color 0,0,0,128 | StrokeWidth 1 | Stroke Color 255,255,255,255[Container]Meter=ImageX=172W=50H=75SolidColor=255,255,255,255DynamicVariables=1[M_TRACK]Group=MarqueesMeter=StringMeasureName=MeasureTrack; Reset Pos Variant: X=(-[TrackX]); Ping Pong Variant: X=(-[TrackX]); Perpetual Variant: X=([Container:W]-[TrackX])Y=1FontFace=#FONTNAME#FontColor=#FONTCOLOR#FontSize=13Text=%1Container=ContainerAntiAlias=1DynamicVariables=1[M_ARTIST]Group=MarqueesMeter=StringMeasureName=MeasureArtist; Reset Pos Variant: X=(-[ArtistX]); Ping Pong Variant: X=(-[ArtistX]); Perpetual Variant: X=([Container:W]-[ArtistX])Y=20rFontFace=#FONTNAME#FontColor=#FONTCOLOR#FontSize=12Text=%1TooltipText=%1Container=ContainerAntiAlias=1DynamicVariables=1[M_ALBUM]Group=MarqueesMeter=StringMeasureName=MeasureAlbum; Reset Pos Variant: X=(-[AlbumX]); Ping Pong Variant: X=(-[AlbumX]); Perpetual Variant: X=([Container:W]-[AlbumX])Y=20rFontFace=#FONTNAME#FontColor=#FONTCOLOR#FontSize=12Text=%1Container=ContainerAntiAlias=1DynamicVariables=1
The 1st variation above works right away, for the 2nd you'd have to uncomment the code for the desired behavior. Both use Winamp as the player and NowPlaying as the plugin / measure, since that's what I use myself, but adapting to WebNowPlaying and Spotify should be trivial. By the way, the Player skin from my MYiniMeter suite also uses endless scrolling for the artist, duration and track info, but that might be too complicated for you and from what you mentioned it seems you're interested in some kind of "ping-pong" behavior.
Statistics: Posted by Yincognito — Yesterday, 4:35 pm