Yes, for sure. Let me do it and I'll be back soon.
It is currently February 28th, 2020, 2:17 am
Syncing skins

 Rainmeter Sage
 Posts: 9792
 Joined: October 11th, 2010, 6:27 pm
 Location: Gheorgheni, Romania

 Posts: 182
 Joined: April 10th, 2014, 12:31 am
 Location: Canada
Re: Syncing skins
Sound is working fine from other applications, but I don't think I have any other Rainmeter skins that produce sound.balala wrote: ↑March 14th, 2019, 7:19 pmThanks.
I'm surprised, because I have both sound and the shadows. The balls have also been disappearing for me too (before have been fixed), but the sound is played and the shadows are there. So:
 About the sound: have you turned on the speakers (if needed)? (I hope you did). Are other skins playing the sounds?
 About the shadows: click the clock to hide it. You should have to see the shadows on the horizontal plane of the base (see the attached screenshot). Aren't they there?
Okay, the shadows are there, all right. I just hadn't looked for them with the clock hiddenmy dumb mistake! But those shadows just make me think how much more work that skin must have been for you!

 Rainmeter Sage
 Posts: 9792
 Joined: October 11th, 2010, 6:27 pm
 Location: Gheorgheni, Romania
Re: Syncing skins
Ok, attached you can find a very simple skin. If you load it you have one single PLAY string. If you click it, the skin plays a half minute sound. Do you hear it?
Ok, don't worry, it happens to all of us sometimes to not notice a detail. Especially that those shadows are not extremely well visible, especially while the clock is displayed.
Yep, I worked quite much with the whole skin, but I enjoyed it. In fact I enjoy every work with any Rainmeter skin. I love this small program and what can be done with it.
You do not have the required permissions to view the files attached to this post.

 Rainmeter Sage
 Posts: 9792
 Joined: October 11th, 2010, 6:27 pm
 Location: Gheorgheni, Romania
Re: Syncing skins
This is what you need? Here is the rewritten code:
Code: Select all
[Rainmeter]
Update=1000
AccurateText=1
[Variables]
skinWidth=274
skinHeight=50
cornerRoundness=7
; pendulumHeight: height of pendulum skin.
; pendulumBorder: size of pendulum border.
pendulumHeight=50
pendulumBorder=2
pendulumLEDBorder=1
pendulumLEDSize=5
pendulumSpan=(#skinWidth##pendulumBorder#((#pendulumLEDSize#+#pendulumLEDBorder#+2)*2))
pendulumLEDSpacing=(Trunc(#pendulumSpan#/9))
pendulumStartX=((#skinWidth#(#pendulumLEDSpacing#*9))/2)
colorPendulumBackground=0,10,36,255
colorPendulumBorder=0,64,192,255
colorPendulumTitleBar=0,64,192,255
;colorLEDBorder=255,255,255,255
colorLEDBorder=0,10,36,255
colorLEDOff=0,10,36,255
colorLEDOn=255,063,063,255
U=[!UpdateMeasure "MeasureSlide"][!UpdateMeasure "msrPendulumWrap"][!UpdateMeterGroup "PendulumLED"][!UpdateMeter "Uptime"][!Redraw]
Num=1
W=80
[MeasureSlide]
Measure=Plugin
Plugin=ActionTimer
Group=Sliders
ActionList1=Repeat Forth,#W#,10
Forth=[!SetVariable Num "(Clamp((#Num#+1),1,10))"]#U#
ActionList2=Repeat Back,#W#,10
Back=[!SetVariable Num "(Clamp((#Num#1),1,10))"]#U#
DynamicVariables=1
[msrPendulumWrap]
Measure=Calc
DynamicVariables=1
Formula=#Num#
IfConditionMode=1
IfCondition=1
IfTrueAction=[!SetOptionGroup PendulumLED PendulumFillColor "Fill Color #*colorLEDOff*#"][!SetOption mtrLED[&msrPendulumWrap] PendulumFillColor "Fill Color #*colorLEDOn*#"]
IfCondition2=((#CURRENTSECTION#=1)(#CURRENTSECTION#=10))
IfTrueAction2=[!CommandMeasure "MeasureSlide" "Stop 1"][!CommandMeasure "MeasureSlide" "Stop 2"]
;IfAboveValue=9
;IfAboveAction=[!SetOption msrPendulumWrap Formula "msrPendulumWrap1"]
;IfBelowValue=2
;IfBelowAction=[!SetOption msrPendulumWrap Formula "msrPendulumWrap+1"]
[MeasureTime]
Measure=Time
Format=%#H:%M:%S
[MeasureSec]
Measure=Time
Format=%#S
[MeasureSeconds]
Measure=Calc
Formula=( MeasureSec % 2 )
IfCondition=(#CURRENTSECTION#=0)
IfTrueAction=[!CommandMeasure "MeasureSlide" "Execute 1"][!CommandMeasure "MeasureSlide" "Stop 2"]
IfFalseAction=[!CommandMeasure "MeasureSlide" "Stop 1"][!CommandMeasure "MeasureSlide" "Execute 2"]
;[msrPendulumArc1]
;Measure=Calc
;DynamicVariables=1
;Formula=msrPendulumArc+1
;IfConditionMode=1
;ifCondition=1
;IfTrueAction=[!SetVariable PendulumLEDNum "[msrPendulumArc]"]
;IfAboveValue=9
;IfAboveAction=[!SetOption msrPendulumArc Formula "msrPendulumArc1"]
;IfBelowValue=2
;IfBelowAction=[!SetOption msrPendulumArc Formula "msrPendulumArc+1"]
;
;[msrPendulumArc2]
;Measure=Calc
;DynamicVariables=1
;Formula=Clamp(msrPendulumArc+2,2,21)
;IfConditionMode=1
;ifCondition=1
;IfTrueAction=[!SetVariable PendulumLEDNum "(Clamp(Trunc([msrPendulumArc]/2), 1, 10))"]
;IfAboveValue=20
;IfAboveAction=[!SetOption msrPendulumArc Formula "Clamp(msrPendulumArc2,2,21)"]
;IfBelowValue=3
;IfBelowAction=[!SetOption msrPendulumArc Formula "Clamp(msrPendulumArc+2,2,21)"]
;
;[msrPendulumSwing]
;Measure=Calc
;DynamicVariables=1
;Formula=1
;IfConditionMode=1
;ifCondition=1
;IfTrueAction=[!SetOptionGroup PendulumLED PendulumFillColor "Fill Color #*colorLEDOff*#"][!SetOption mtrLED#PendulumLEDNum# PendulumFillColor "Fill Color #*colorLEDOn*#"]
[mtrPendulumBackground]
Meter=Shape
Shape=Rectangle 0,0,#skinWidth#,#skinHeight#,#cornerRoundness#  StrokeWidth #pendulumBorder#  Stroke Color #colorPendulumBorder#  Fill Color #colorPendulumBackground#
AntiAlias=1
X=0
Y=0
W=#skinWidth#
H=#skinHeight#
;[mtrArc]
;Meter=Shape
;Shape=Arc 0,0,(#pendulumLEDSpacing#*9),0,41,10,*,1  StrokeWidth 1  Stroke Color #colorWhite#
;X=#pendulumStartX#
;Y=10
;DynamicVariables=1
[mtrLED1]
Meter=Shape
Group=PendulumLED
Shape=Ellipse 0,0,#pendulumLEDSize#  StrokeWidth #pendulumLEDBorder#  Stroke Color #colorLEDBorder#  Extend PendulumFillColor
PendulumFillColor=Fill Color #colorLEDOn#
X=#pendulumStartX#
Y=10
DynamicVariables=1
[mtrLED2]
Meter=Shape
Group=PendulumLED
Shape=Ellipse 0,0,#pendulumLEDSize#  StrokeWidth #pendulumLEDBorder#  Stroke Color #colorLEDBorder#  Extend PendulumFillColor
PendulumFillColor=Fill Color #colorLEDOn#
X=(#pendulumLEDSpacing#6)r
Y=26
DynamicVariables=1
[mtrLED3]
Meter=Shape
Group=PendulumLED
Shape=Ellipse 0,0,#pendulumLEDSize#  StrokeWidth #pendulumLEDBorder#  Stroke Color #colorLEDBorder#  Extend PendulumFillColor
PendulumFillColor=Fill Color #colorLEDOn#
X=(#pendulumLEDSpacing#+0)r
Y=34
DynamicVariables=1
[mtrLED4]
Meter=Shape
Group=PendulumLED
Shape=Ellipse 0,0,#pendulumLEDSize#  StrokeWidth #pendulumLEDBorder#  Stroke Color #colorLEDBorder#  Extend PendulumFillColor
PendulumFillColor=Fill Color #colorLEDOn#
X=(#pendulumLEDSpacing#+3)r
Y=38
DynamicVariables=1
[mtrLED5]
Meter=Shape
Group=PendulumLED
Shape=Ellipse 0,0,#pendulumLEDSize#  StrokeWidth #pendulumLEDBorder#  Stroke Color #colorLEDBorder#  Extend PendulumFillColor
PendulumFillColor=Fill Color #colorLEDOn#
X=(#pendulumLEDSpacing#+3)r
Y=40
DynamicVariables=1
[mtrLED6]
Meter=Shape
Group=PendulumLED
Shape=Ellipse 0,0,#pendulumLEDSize#  StrokeWidth #pendulumLEDBorder#  Stroke Color #colorLEDBorder#  Extend PendulumFillColor
PendulumFillColor=Fill Color #colorLEDOn#
X=#pendulumLEDSpacing#r
Y=40
DynamicVariables=1
[mtrLED7]
Meter=Shape
Group=PendulumLED
Shape=Ellipse 0,0,#pendulumLEDSize#  StrokeWidth #pendulumLEDBorder#  Stroke Color #colorLEDBorder#  Extend PendulumFillColor
PendulumFillColor=Fill Color #colorLEDOn#
X=(#pendulumLEDSpacing#+3)r
Y=38
DynamicVariables=1
[mtrLED8]
Meter=Shape
Group=PendulumLED
Shape=Ellipse 0,0,#pendulumLEDSize#  StrokeWidth #pendulumLEDBorder#  Stroke Color #colorLEDBorder#  Extend PendulumFillColor
PendulumFillColor=Fill Color #colorLEDOn#
X=(#pendulumLEDSpacing#+3)r
Y=34
DynamicVariables=1
[mtrLED9]
Meter=Shape
Group=PendulumLED
Shape=Ellipse 0,0,#pendulumLEDSize#  StrokeWidth #pendulumLEDBorder#  Stroke Color #colorLEDBorder#  Extend PendulumFillColor
PendulumFillColor=Fill Color #colorLEDOn#
X=(#pendulumLEDSpacing#+0)r
Y=26
DynamicVariables=1
[mtrLED10]
Meter=Shape
Group=PendulumLED
Shape=Ellipse 0,0,#pendulumLEDSize#  StrokeWidth #pendulumLEDBorder#  Stroke Color #colorLEDBorder#  Extend PendulumFillColor
PendulumFillColor=Fill Color #colorLEDOn#
X=(#pendulumLEDSpacing#6)r
Y=10
DynamicVariables=1
[MeterTime]
Meter=STRING
MeasureName=MeasureTime
X=(#SkinWidth#/2)
Y=0
Padding=15,5,15,5
FontColor=220,220,220
FontEffectColor=0,0,0
StringEffect=Shadow
FontSize=8
FontFace=Segoe UI
StringStyle=BOLD
StringAlign=Center
AntiAlias=1
Text=%1
You do not have the required permissions to view the files attached to this post.

 Posts: 182
 Joined: April 10th, 2014, 12:31 am
 Location: Canada
Re: Syncing skins
Yes, loud and clear! Still no sound from the Pendulum, though.
In order to install this sound skin, I needed to update Rainmeter, from 4.3 r3273, to 4.3 r3294. After the update, my previous skins are a bit off! Some of the text is now overflowing the bottom of a window (font size increase?); some windows wrong location, etc. Will have to look further into it.
Last edited by qwerky on March 14th, 2019, 9:23 pm, edited 1 time in total.

 Rainmeter Sage
 Posts: 9792
 Joined: October 11th, 2010, 6:27 pm
 Location: Gheorgheni, Romania
Re: Syncing skins
Well, this is weird, because I hear the sound when the balls on the pendulum are colliding. Don't know what to say, why you don't have the sound. Honestly don't know.

 Rainmeter Sage
 Posts: 9792
 Joined: October 11th, 2010, 6:27 pm
 Location: Gheorgheni, Romania
Re: Syncing skins
So, here is the implementation of this request. I used the same balls, didn't recolor them yet, so they are still grey. Someone who is better at image manipulation will have to recolor them, because I don't work with images. I just added the digits of time. However when you load or refresh the skin, still the old time and date are visible. But if you click it, it is hidden and the digits on the balls are shown (yep, at next click these are again hidden and the old clock is shown again).Yincognito wrote: ↑March 13th, 2019, 6:17 pmWow, that's a really nice skin  you probably worked a bit on the TransformationMatrix formulas there! I know it's a finished work, but if you'll ever want to add something extra to it in the future, putting the H H : M M characters on the balls when animating it (to make them look like pool game balls, maybe even having diiferent colors) would make it even cooler...
As usual, you can change the time format of the [MeasureTime] measure, if desired.
The rewrote code:
Code: Select all
[Rainmeter]
Update=100
DynamicWindowSize=1
BackgroundMode=2
SolidColor=0,0,0,1
MouseOverAction=[!ShowMeter "MeterSettingsButton"][!SetVariable ShowStop "1"][!UpdateMeter "MeterStopButton"][!Redraw]
MouseLeaveAction=[!HideMeter "MeterSettingsButton"][!SetVariable ShowStop "0"][!UpdateMeter "MeterStopButton"][!Redraw]
[Metadata]
Name=Pendulum (Newton's Cradle)
Author=Balala (blaci75@gmail.com) & Chevin
Version=1
License=Creative Commons AttributionNonCommercialShare Alike 3.0
Information=It shows a fully functional Newton's cradle, with clock. You can start moving from one to four balls.
[Variables]
@Include=#@#Settings.inc
Balls=0
Start=0
Stop=0
ShowStop=0
ShowStop2=1
[DateTimeStyle]
X=(#Width#/2)
Y=([MeterCenter:H]#Width#/20)
Padding=13,0,15,2
FontSize=(#Width#/30)
FontFace=SF Digital Readout
StringStyle=BOLD
StringAlign=CENTER
AntiAlias=1
Text=%2#CRLF#%1
InlineSetting=Size  (#Width#/20)
InlinePattern=^(.*)#CRLF#.*$
DynamicVariables=1
[TimeDigitStyle]
FontColor=0,0,0
FontEffectColor=220,220,220
StringEffect=Shadow
FontSize=16
FontFace=SF Digital Readout
StringStyle=BOLD
StringAlign=CenterCenter
AntiAlias=1
Text=%1
[MeasureDate]
Measure=Time
Format=localedate
UpdateDivider=5
[MeasureTime]
Measure=Time
Format=%H:%M
UpdateDivider=5
[MeasureTime1Digit]
Measure=String
String=[MeasureTime]
RegExpSubstitute=1
Substitute="^(\d{1})(\d{1})(.)(\d{1})(\d{1})$":"\1"
[MeasureTime2Digit]
Measure=String
String=[MeasureTime]
RegExpSubstitute=1
Substitute="^(\d{1})(\d{1})(.)(\d{1})(\d{1})$":"\2"
[MeasureTime3Digit]
Measure=String
String=[MeasureTime]
RegExpSubstitute=1
Substitute="^(\d{1})(\d{1})(.)(\d{1})(\d{1})$":"\3"
[MeasureTime4Digit]
Measure=String
String=[MeasureTime]
RegExpSubstitute=1
Substitute="^(\d{1})(\d{1})(.)(\d{1})(\d{1})$":"\4"
[MeasureTime5Digit]
Measure=String
String=[MeasureTime]
RegExpSubstitute=1
Substitute="^(\d{1})(\d{1})(.)(\d{1})(\d{1})$":"\5"
[Timer]
Measure=Calc
Formula=( Timer + 1 )
IfCondition=((MeasureTimerLeft>0.4)&&(MeasureTimerRight<0.4)&&(#Stop#=1))
IfTrueAction=[!DisableMeasure "#CURRENTSECTION#"]
IfCondition2=(Timer*#Attenuated#>9*#Attenuation#*#Attenuated#)
IfTrueAction2=[!DisableMeasure "#CURRENTSECTION#"]
DynamicVariables=1
Disabled=1
[Timer2]
Measure=Calc
Formula=Timer
IfCondition=(Timer2=0)
IfTrueAction=[!SetOption MeterLeft LeftMouseUpAction """[!SetVariable Start "1"][!SetVariable Stop "0"][!SetVariable Balls "0"][!UpdateMeasureGroup "Timers"][!UpdateMeasure "Timer"][!EnableMeasure "Timer"][!UpdateMeterGroup "Balls"]"""][!SetOption MeterLeft2 LeftMouseUpAction """[!SetVariable Start "1"][!SetVariable Stop "0"][!SetVariable Balls "1"][!UpdateMeasureGroup "Timers"][!UpdateMeasure "Timer"][!EnableMeasure "Timer"][!UpdateMeterGroup "Balls"]"""][!SetOption MeterCenter LeftMouseUpAction """[!SetVariable Start "1"][!SetVariable Stop "0"][!SetVariable Balls "2"][!UpdateMeasureGroup "Timers"][!UpdateMeasure "Timer"][!EnableMeasure "Timer"][!UpdateMeterGroup "Balls"]"""][!SetOption MeterRight2 LeftMouseUpAction """[!SetVariable Start "1"][!SetVariable Stop "0"][!SetVariable Balls "3"][!UpdateMeasureGroup "Timers"][!UpdateMeasure "Timer"][!EnableMeasure "Timer"][!UpdateMeterGroup "Balls"]"""][!SetOption MeterRight LeftMouseUpAction """[!SetVariable Start "1"][!SetVariable Stop "0"][!SetVariable Balls "0"][!UpdateMeasureGroup "Timers"][!UpdateMeasure "Timer"][!EnableMeasure "Timer"][!UpdateMeterGroup "Balls"]"""][!SetVariable ShowStop2 "0"][!UpdateMeterGroup "Balls"][!UpdateMeter "MeterStopButton"]
IfFalseAction=[!SetOption MeterLeft LeftMouseUpAction ""][!SetOption MeterLeft2 LeftMouseUpAction ""][!SetOption MeterCenter LeftMouseUpAction ""][!SetOption MeterRight2 LeftMouseUpAction ""][!SetOption MeterRight LeftMouseUpAction ""][!SetVariable ShowStop2 "1"][!UpdateMeterGroup "Balls"][!UpdateMeter "MeterStopButton"]
[MeasureSound]
Measure=Calc
Formula=#Sound#
IfCondition=(MeasureSound=1)
IfTrueAction=[!SetOption MeasureTimer IfTrueAction """[PLAY "#@#Newtons_Cradle.wav"]"""][!UpdateMeasure "MeasureTimer"]
IfFalseAction=[!SetOption MeasureTimer IfTrueAction ""][!UpdateMeasure "MeasureTimer"]
[MeasureShadow]
Measure=Calc
Formula=#Shadow#
IfCondition=(MeasureShadow=1)
IfTrueAction=[!ShowMeterGroup "Shadow"][!Redraw]
IfFalseAction=[!HideMeterGroup "Shadow"][!Redraw]
[MeasureTimer]
Measure=Calc
Formula=(( 1  #Attenuated# * Timer / ( 9 * #Attenuation# )) * Sin ( 2 * PI * ( Timer % 21 ) / 20 ))
IfCondition=(Abs(MeasureTimer)<0.01)
[MeasureTimerLeft]
Measure=Calc
Formula=( Clamp (( #Start# * MeasureTimer ), 1, 0 ))
DynamicVariables=1
Group=Timers
[MeasureTimerRight]
Measure=Calc
Formula=( Clamp (( #Start# * MeasureTimer ), 0, 1 ))
DynamicVariables=1
Group=Timers
[MeterLeft]
Meter=Image
Imagename=#@#Left.png
X=((#Width#5*[MeterLeft:W]4*((#Width#<250)?2:((#Width#<450)?3:4)))/2)
Y=(6*#Width#/100)
W=(#Width#/12)
PreserveAspectRatio=1
TransformationMatrix=(Cos([MeasureTimerLeft]*PI/8));((Sin([MeasureTimerLeft]*PI/8)));(Sin([MeasureTimerLeft]*PI/8));(Cos([MeasureTimerLeft]*PI/8));(([MeterLeft:X]+([MeterLeft:W]/2))([MeterLeft:X]+([MeterLeft:W]/2))*Cos([MeasureTimerLeft]*PI/8)(0.022*#Width#)*Sin([MeasureTimerLeft]*PI/8));((0.022*#Width#)+([MeterLeft:X]+([MeterLeft:W]/2))*Sin([MeasureTimerLeft]*PI/8)(0.022*#Width#)*Cos([MeasureTimerLeft]*PI/8))
LeftMouseUpAction=[!SetVariable Start "1"][!SetVariable Stop "0"][!SetVariable Balls "0"][!UpdateMeasureGroup "Timers"][!UpdateMeasure "Timer"][!EnableMeasure "Timer"][!UpdateMeterGroup "Balls"]
DynamicVariables=1
Group=Balls
[MeterLeft2]
Meter=Image
Imagename=#@#Left.png
X=((#Width#<250)?2:((#Width#<450)?3:4))R
Y=0r
W=[MeterLeft:W]
PreserveAspectRatio=1
TransformationMatrix=((#Balls#>=1)?(Cos(([MeasureTimerLeft]+(#Balls#>=3)*[MeasureTimerRight])*PI/8)):1);((#Balls#>=1)*(Sin(([MeasureTimerLeft]+(#Balls#>=3)*[MeasureTimerRight])*PI/8)));((#Balls#>=1)*Sin(([MeasureTimerLeft]+(#Balls#>=3)*[MeasureTimerRight])*PI/8));((#Balls#>=1)?(Cos(([MeasureTimerLeft]+(#Balls#>=3)*[MeasureTimerRight])*PI/8)):1);((#Balls#>=1)*(([MeterLeft2:X]+([MeterLeft2:W]/2))([MeterLeft2:X]+([MeterLeft2:W]/2))*Cos(([MeasureTimerLeft]+(#Balls#>=3)*[MeasureTimerRight])*PI/8)(0.022*#Width#)*Sin(([MeasureTimerLeft]+(#Balls#>=3)*[MeasureTimerRight])*PI/8)));((#Balls#>=1)*((0.022*#Width#)+([MeterLeft2:X]+([MeterLeft2:W]/2))*Sin(([MeasureTimerLeft]+(#Balls#>=3)*[MeasureTimerRight])*PI/8)(0.022*#Width#)*Cos(([MeasureTimerLeft]+(#Balls#>=3)*[MeasureTimerRight])*PI/8)))
LeftMouseUpAction=[!SetVariable Start "1"][!SetVariable Stop "0"][!SetVariable Balls "1"][!UpdateMeasureGroup "Timers"][!UpdateMeasure "Timer"][!EnableMeasure "Timer"][!UpdateMeterGroup "Balls"]
DynamicVariables=1
Group=Balls
[MeterCenter]
Meter=Image
Imagename=#@#Left.png
X=((#Width#<250)?2:((#Width#<450)?3:4))R
Y=0r
W=[MeterLeft:W]
PreserveAspectRatio=1
TransformationMatrix=((#Balls#>=2)?(Cos(([MeasureTimerLeft]+[MeasureTimerRight])*PI/8)):1);((#Balls#>=2)*(Sin(([MeasureTimerLeft]+[MeasureTimerRight])*PI/8)));((#Balls#>=2)*Sin(([MeasureTimerLeft]+[MeasureTimerRight])*PI/8));((#Balls#>=2)?(Cos(([MeasureTimerLeft]+[MeasureTimerRight])*PI/8)):1);((#Balls#>=2)*(([MeterCenter:X]+([MeterCenter:W]/2))([MeterCenter:X]+([MeterCenter:W]/2))*Cos(([MeasureTimerLeft]+[MeasureTimerRight])*PI/8)(0.022*#Width#)*Sin(([MeasureTimerLeft]+[MeasureTimerRight])*PI/8)));((#Balls#>=2)*((0.022*#Width#)+([MeterCenter:X]+([MeterCenter:W]/2))*Sin(([MeasureTimerLeft]+[MeasureTimerRight])*PI/8)(0.022*#Width#)*Cos(([MeasureTimerLeft]+[MeasureTimerRight])*PI/8)))
LeftMouseUpAction=[!SetVariable Start "1"][!SetVariable Stop "0"][!SetVariable Balls "2"][!UpdateMeasureGroup "Timers"][!UpdateMeasure "Timer"][!EnableMeasure "Timer"][!UpdateMeterGroup "Balls"]
DynamicVariables=1
Group=Balls
[MeterRight2]
Meter=Image
Imagename=#@#Left.png
X=((#Width#<250)?2:((#Width#<450)?3:4))R
Y=0r
W=[MeterLeft:W]
PreserveAspectRatio=1
TransformationMatrix=((#Balls#>=1)?(Cos(([MeasureTimerRight]+(#Balls#>=3)*[MeasureTimerLeft])*PI/8)):1);((#Balls#>=1)*(Sin(([MeasureTimerRight]+(#Balls#>=3)*[MeasureTimerLeft])*PI/8)));((#Balls#>=1)*Sin(([MeasureTimerRight]+(#Balls#>=3)*[MeasureTimerLeft])*PI/8));((#Balls#>=1)?(Cos(([MeasureTimerRight]+(#Balls#>=3)*[MeasureTimerLeft])*PI/8)):1);((#Balls#>=1)*(([MeterRight2:X]+([MeterRight2:W]/2))([MeterRight2:X]+([MeterRight2:W]/2))*Cos(([MeasureTimerRight]+(#Balls#>=3)*[MeasureTimerLeft])*PI/8)(0.022*#Width#)*Sin(([MeasureTimerRight]+(#Balls#>=3)*[MeasureTimerLeft])*PI/8)));((#Balls#>=1)*((0.022*#Width#)+([MeterRight2:X]+([MeterRight2:W]/2))*Sin(([MeasureTimerRight]+(#Balls#>=3)*[MeasureTimerLeft])*PI/8)(0.022*#Width#)*Cos(([MeasureTimerRight]+(#Balls#>=3)*[MeasureTimerLeft])*PI/8)))
LeftMouseUpAction=[!SetVariable Start "1"][!SetVariable Stop "0"][!SetVariable Balls "3"][!UpdateMeasureGroup "Timers"][!UpdateMeasure "Timer"][!EnableMeasure "Timer"][!UpdateMeterGroup "Balls"]
DynamicVariables=1
Group=Balls
[MeterRight]
Meter=Image
Imagename=#@#Left.png
X=((#Width#<250)?2:((#Width#<450)?3:4))R
Y=0r
W=[MeterLeft:W]
PreserveAspectRatio=1
TransformationMatrix=(Cos([MeasureTimerRight]*PI/8));((Sin([MeasureTimerRight]*PI/8)));(Sin([MeasureTimerRight]*PI/8));(Cos([MeasureTimerRight]*PI/8));(([MeterRight:X]+([MeterRight:W]/2))([MeterRight:X]+([MeterRight:W]/2))*Cos([MeasureTimerRight]*PI/8)(0.022*#Width#)*Sin([MeasureTimerRight]*PI/8));((0.022*#Width#)+([MeterRight:X]+([MeterRight:W]/2))*Sin([MeasureTimerRight]*PI/8)(0.022*#Width#)*Cos([MeasureTimerRight]*PI/8))
LeftMouseUpAction=[!SetVariable Start "1"][!SetVariable Stop "0"][!SetVariable Balls "0"][!UpdateMeasureGroup "Timers"][!UpdateMeasure "Timer"][!EnableMeasure "Timer"][!UpdateMeterGroup "Balls"]
DynamicVariables=1
Group=Balls
[MeterLeftTimeDigit]
Meter=String
MeasureName=MeasureTime1Digit
MeterStyle=TimeDigitStyle
X=((#Width#5*[MeterLeft:W]4*((#Width#<250)?2:((#Width#<450)?3:4)))/2+[MeterLeft:W]/22)
Y=(6*#Width#/100+[MeterLeft:H]12)
TransformationMatrix=(Cos([MeasureTimerLeft]*PI/8));((Sin([MeasureTimerLeft]*PI/8)));(Sin([MeasureTimerLeft]*PI/8));(Cos([MeasureTimerLeft]*PI/8));(([MeterLeft:X]+([MeterLeft:W]/2))([MeterLeft:X]+([MeterLeft:W]/2))*Cos([MeasureTimerLeft]*PI/8)(0.022*#Width#)*Sin([MeasureTimerLeft]*PI/8));((0.022*#Width#)+([MeterLeft:X]+([MeterLeft:W]/2))*Sin([MeasureTimerLeft]*PI/8)(0.022*#Width#)*Cos([MeasureTimerLeft]*PI/8))
DynamicVariables=1
Hidden=1
Group=Balls  TimeDigits
[MeterLeft2TimeDigit]
Meter=String
MeasureName=MeasureTime2Digit
MeterStyle=TimeDigitStyle
X=(((#Width#<250)?2:((#Width#<450)?3:4))+[MeterLeft2:W]/22)R
Y=0r
TransformationMatrix=((#Balls#>=1)?(Cos(([MeasureTimerLeft]+(#Balls#>=3)*[MeasureTimerRight])*PI/8)):1);((#Balls#>=1)*(Sin(([MeasureTimerLeft]+(#Balls#>=3)*[MeasureTimerRight])*PI/8)));((#Balls#>=1)*Sin(([MeasureTimerLeft]+(#Balls#>=3)*[MeasureTimerRight])*PI/8));((#Balls#>=1)?(Cos(([MeasureTimerLeft]+(#Balls#>=3)*[MeasureTimerRight])*PI/8)):1);((#Balls#>=1)*(([MeterLeft2:X]+([MeterLeft2:W]/2))([MeterLeft2:X]+([MeterLeft2:W]/2))*Cos(([MeasureTimerLeft]+(#Balls#>=3)*[MeasureTimerRight])*PI/8)(0.022*#Width#)*Sin(([MeasureTimerLeft]+(#Balls#>=3)*[MeasureTimerRight])*PI/8)));((#Balls#>=1)*((0.022*#Width#)+([MeterLeft2:X]+([MeterLeft2:W]/2))*Sin(([MeasureTimerLeft]+(#Balls#>=3)*[MeasureTimerRight])*PI/8)(0.022*#Width#)*Cos(([MeasureTimerLeft]+(#Balls#>=3)*[MeasureTimerRight])*PI/8)))
DynamicVariables=1
Hidden=1
Group=Balls  TimeDigits
[MeterCenterTimeDigit]
Meter=String
MeasureName=MeasureTime3Digit
MeterStyle=TimeDigitStyle
X=(((#Width#<250)?2:((#Width#<450)?3:4))+[MeterCenter:W]/22)R
Y=0r
TransformationMatrix=((#Balls#>=2)?(Cos(([MeasureTimerLeft]+[MeasureTimerRight])*PI/8)):1);((#Balls#>=2)*(Sin(([MeasureTimerLeft]+[MeasureTimerRight])*PI/8)));((#Balls#>=2)*Sin(([MeasureTimerLeft]+[MeasureTimerRight])*PI/8));((#Balls#>=2)?(Cos(([MeasureTimerLeft]+[MeasureTimerRight])*PI/8)):1);((#Balls#>=2)*(([MeterCenter:X]+([MeterCenter:W]/2))([MeterCenter:X]+([MeterCenter:W]/2))*Cos(([MeasureTimerLeft]+[MeasureTimerRight])*PI/8)(0.022*#Width#)*Sin(([MeasureTimerLeft]+[MeasureTimerRight])*PI/8)));((#Balls#>=2)*((0.022*#Width#)+([MeterCenter:X]+([MeterCenter:W]/2))*Sin(([MeasureTimerLeft]+[MeasureTimerRight])*PI/8)(0.022*#Width#)*Cos(([MeasureTimerLeft]+[MeasureTimerRight])*PI/8)))
DynamicVariables=1
Hidden=1
Group=Balls  TimeDigits
[MeterRight2TimeDigit]
Meter=String
MeasureName=MeasureTime4Digit
MeterStyle=TimeDigitStyle
X=(((#Width#<250)?2:((#Width#<450)?3:4))+[MeterRight2:W]/22)R
Y=0r
TransformationMatrix=((#Balls#>=1)?(Cos(([MeasureTimerRight]+(#Balls#>=3)*[MeasureTimerLeft])*PI/8)):1);((#Balls#>=1)*(Sin(([MeasureTimerRight]+(#Balls#>=3)*[MeasureTimerLeft])*PI/8)));((#Balls#>=1)*Sin(([MeasureTimerRight]+(#Balls#>=3)*[MeasureTimerLeft])*PI/8));((#Balls#>=1)?(Cos(([MeasureTimerRight]+(#Balls#>=3)*[MeasureTimerLeft])*PI/8)):1);((#Balls#>=1)*(([MeterRight2:X]+([MeterRight2:W]/2))([MeterRight2:X]+([MeterRight2:W]/2))*Cos(([MeasureTimerRight]+(#Balls#>=3)*[MeasureTimerLeft])*PI/8)(0.022*#Width#)*Sin(([MeasureTimerRight]+(#Balls#>=3)*[MeasureTimerLeft])*PI/8)));((#Balls#>=1)*((0.022*#Width#)+([MeterRight2:X]+([MeterRight2:W]/2))*Sin(([MeasureTimerRight]+(#Balls#>=3)*[MeasureTimerLeft])*PI/8)(0.022*#Width#)*Cos(([MeasureTimerRight]+(#Balls#>=3)*[MeasureTimerLeft])*PI/8)))
DynamicVariables=1
Hidden=1
Group=Balls  TimeDigits
[MeterRightTimeDigit]
Meter=String
MeasureName=MeasureTime5Digit
MeterStyle=TimeDigitStyle
X=(((#Width#<250)?2:((#Width#<450)?3:4))+[MeterRight:W]/22)R
Y=0r
TransformationMatrix=(Cos([MeasureTimerRight]*PI/8));((Sin([MeasureTimerRight]*PI/8)));(Sin([MeasureTimerRight]*PI/8));(Cos([MeasureTimerRight]*PI/8));(([MeterRight:X]+([MeterRight:W]/2))([MeterRight:X]+([MeterRight:W]/2))*Cos([MeasureTimerRight]*PI/8)(0.022*#Width#)*Sin([MeasureTimerRight]*PI/8));((0.022*#Width#)+([MeterRight:X]+([MeterRight:W]/2))*Sin([MeasureTimerRight]*PI/8)(0.022*#Width#)*Cos([MeasureTimerRight]*PI/8))
DynamicVariables=1
Hidden=1
Group=Balls  TimeDigits
[MeterUpperBar]
Meter=Image
ImageName=#@#Deck.png
X=0
Y=0
W=#Width#
PreserveAspectRatio=1
Hidden=0
[MeterBallShadowLeft]
Meter=Image
ImageName=#@#Ballshadow.png
X=([MeterLeft:X]2*(#Width#>250)+0.12*#Width#*[MeasureTimerLeft])
Y=(0.394*#Width#)
W=(#Width#/11)
PreserveAspectRatio=1
DynamicVariables=1
Group=Shadow
[MeterBallShadowLeft2]
Meter=Image
ImageName=#@#Ballshadow.png
X=([MeterLeft2:X]2*(#Width#>250)+0.12*#Width#*([MeasureTimerLeft]+(#Balls#>=3)*[MeasureTimerRight])*(#Balls#>=1))
Y=0r
W=[MeterBallShadowLeft:W]
PreserveAspectRatio=1
DynamicVariables=1
Group=Shadow
[MeterBallShadowCenter]
Meter=Image
ImageName=#@#Ballshadow.png
X=([MeterCenter:X]2*(#Width#>250)+0.12*#Width#*([MeasureTimerLeft]+[MeasureTimerRight])*(#Balls#>=2))
Y=0r
W=[MeterBallShadowLeft:W]
PreserveAspectRatio=1
DynamicVariables=1
Group=Shadow
[MeterBallShadowRight2]
Meter=Image
ImageName=#@#Ballshadow.png
X=([MeterRight2:X]2*(#Width#>250)+0.12*#Width#*([MeasureTimerRight]+(#Balls#>=3)*[MeasureTimerLeft])*(#Balls#>=1))
Y=0r
W=[MeterBallShadowLeft:W]
PreserveAspectRatio=1
DynamicVariables=1
Group=Shadow
[MeterBallShadowRight]
Meter=Image
ImageName=#@#Ballshadow.png
X=([MeterRight:X]2*(#Width#>250)+0.12*#Width#*[MeasureTimerRight])
Y=0r
W=[MeterBallShadowLeft:W]
PreserveAspectRatio=1
DynamicVariables=1
Group=Shadow
[MeterShowHideDateTime]
MeasureName=MeasureDate
MeasureName2=MeasureTime
Meter=STRING
MeterStyle=DateTimeStyle
FontColor=0,0,0,1
SolidColor=0,0,0,1
LeftMouseUpAction=[!ToggleMeter "MeterDateTime"][!ToggleMeterGroup "TimeDigits"][!Redraw]
[MeterDateTime]
MeasureName=MeasureDate
MeasureName2=MeasureTime
Meter=STRING
MeterStyle=DateTimeStyle
FontColor=0,0,0
SolidColor=180,180,180,180
BevelType=1
[MeterSettingsButton]
Meter=STRING
X=(#Width#/15)
Y=(0.47*#Width#)
H=(#Width#/10)
W=(#Width#/20)
StringEffect=Border
FontSize=(#Width#/20)
FontFace=ToolTime
FontColor=255,255,255
SolidColor=199,80,80,1
StringAlign=CENTERCENTER
AntiAlias=1
Text=C
TransformationMatrix=(Cos(PI/2));(Sin(PI/2));(Sin(PI/2));(Cos(PI/2));((#Width#/15)(#Width#/15)*Cos(PI/2)(0.47*#Width#*Sin(PI/2)));((0.47*#Width#)+(#Width#/15)*Sin(PI/2)(0.47*#Width#*Cos(PI/2)))
MouseOverAction=[!SetOption #CURRENTSECTION# SolidColor "229,229,229,120"][!UpdateMeter "#CURRENTSECTION#"][!Redraw]
MouseLeaveAction=[!SetOption #CURRENTSECTION# SolidColor "199,80,80,1"][!UpdateMeter "#CURRENTSECTION#"][!Redraw]
LeftMouseDownAction=[!SetOption #CURRENTSECTION# X "(#Width#/151)"][!SetOption #CURRENTSECTION# Y "(0.47*#Width#+1)"][!SetOption #CURRENTSECTION# SolidColor "229,229,229,200"][!UpdateMeter "#CURRENTSECTION#"][!Redraw]
LeftMouseUpAction=[!ActivateConfig "#CURRENTCONFIG#" "Settings.ini"][!SetOption #CURRENTSECTION# X "(#Width#/15)"][!SetOption #CURRENTSECTION# Y "(0.47*#Width#)"][!SetOption #CURRENTSECTION# SolidColor "229,229,229,120"][!UpdateMeter "#CURRENTSECTION#"][!Redraw]
Group=Buttons
Hidden=1
[MeterStopButton]
Meter=STRING
X=(3+#Width#/6)
Y=(0.47*#Width#)
W=(#Width#/10)
H=(#Width#/20)
StringEffect=Border
FontSize=(#Width#/37.5)
FontFace=Wingdings
FontColor=255,255,255
SolidColor=199,80,80,1
StringAlign=CENTERCENTER
AntiAlias=1
Text=n
MouseOverAction=[!SetOption #CURRENTSECTION# SolidColor "229,229,229,120"][!UpdateMeter "#CURRENTSECTION#"][!Redraw]
MouseLeaveAction=[!SetOption #CURRENTSECTION# SolidColor "199,80,80,1"][!UpdateMeter "#CURRENTSECTION#"][!Redraw]
LeftMouseDownAction=[!SetOption #CURRENTSECTION# X "(4+#Width#/6)"][!SetOption #CURRENTSECTION# Y "(0.47*#Width#+1)"][!SetOption #CURRENTSECTION# SolidColor "229,229,229,200"][!UpdateMeter "#CURRENTSECTION#"][!Redraw]
LeftMouseUpAction=[!SetOption #CURRENTSECTION# X "(3+#Width#/6)"][!SetOption #CURRENTSECTION# Y "(0.47*#Width#)"][!SetOption #CURRENTSECTION# SolidColor "229,229,229,120"][!SetVariable Stop "1"][!UpdateMeasure "Timer"][!UpdateMeter "#CURRENTSECTION#"][!Redraw]
Group=Buttons
DynamicVariables=1
Hidden=(1#ShowStop#*#ShowStop2#)
Please test it and let me know what you think about it.

 Posts: 832
 Joined: February 27th, 2015, 2:38 pm
Re: Syncing skins
Wow, that was fast! It was just an idea, not a "request" though, but since you took it literally, well, I can only be happy about itbalala wrote: ↑March 15th, 2019, 7:22 pmSo, here is the implementation of this request. I used the same balls, didn't recolor them yet, so they are still grey. Someone who is better at image manipulation will have to recolor them, because I don't work with images. I just added the digits of time. However when you load or refresh the skin, still the old time and date are visible. But if you click it, it is hidden and the digits on the balls are shown (yep, at next click these are again hidden and the old clock is shown again).
As usual, you can change the time format of the [MeasureTime] measure, if desired.
Replace the old code with this one.
Please test it and let me know what you think about it.
I tested both your original skin (which lacked 3 balls in the middle, but I guess this was the problem that you said in your previous comments it needed to be fixed, so I guess it's the fault of the "old code"  since I took the first packed skin you posted here) and the skin with the digits on the balls and they worked fine. I didn't know I had to click it to put the digits on the balls, so at first I thought it didn't work, but eventually I figured it out and it's all good.
The images can be taken from the internet and resized, so it's not a problem. I'm good enough at image manipulation, so I can easily do it. However, what I had in mind was:
 the digits on the balls to be "curved", like a map that you put on a globe (I guess this involves a lot of skewing and stuff with the TransformationMatrix, so it's a challenge)
 the digits on the balls dynamically changing according to the current time
 the color of the balls dynamically changing according to the digits on the balls (e.g. if it's a 2 on the ball, the ball should be blue, and if it's a 6, green)
 this is only in theory, but making some balls solids and some stripes would have added a bit of realism to it as well
Anyway, like I said, this was just an idea, if you wanted to play with it, not a request. I guess such a "clock" would be significantly attractive to users, generating lots of downloads...but that's just a guess. Bottom line, my idea was meant to make your skin really "boombastic", for you own satisfaction and fame, if it makes any sense.

 Rainmeter Sage
 Posts: 9792
 Joined: October 11th, 2010, 6:27 pm
 Location: Gheorgheni, Romania
Re: Syncing skins
No, it wasn't fast enough, but this doesn't matter. I try to always update my skins, especially if I get an interesting request / idea (say it how want). And this was an interesting one.Yincognito wrote: ↑March 15th, 2019, 9:58 pmWow, that was fast! It was just an idea, not a "request" though, but since you took it literally, well, I can only be happy about it
Ok, do it, let's see what we can get out of it. If you found / manipulated properly the needed images, having differently colored balls, post them back here and we'll see...Yincognito wrote: ↑March 15th, 2019, 9:58 pmThe images can be taken from the internet and resized, so it's not a problem. I'm good enough at image manipulation, so I can easily do it.
I'm not sure this can be done dynamically through Rainmeter code. At least for now I don't see a good way.Yincognito wrote: ↑March 15th, 2019, 9:58 pmHowever, what I had in mind was:
 the digits on the balls to be "curved", like a map that you put on a globe (I guess this involves a lot of skewing and stuff with the TransformationMatrix, so it's a challenge)
My mistake. A DyanmicVariables=1 option is required on the newly added [MeasureTime1Digit], [MeasureTime2Digit], [MeasureTime3Digit],Yincognito wrote: ↑March 15th, 2019, 9:58 pm the digits on the balls dynamically changing according to the current time
[MeasureTime4Digit] and [MeasureTime5Digit] measures. Add them and the digits will always show the actual time.
Sorry for the mistake...
Probably both are possible, if we have the appropriate images, as discussed above.Yincognito wrote: ↑March 15th, 2019, 9:58 pm the color of the balls dynamically changing according to the digits on the balls (e.g. if it's a 2 on the ball, the ball should be blue, and if it's a 6, green)
 this is only in theory, but making some balls solids and some stripes would have added a bit of realism to it as well

 Posts: 832
 Joined: February 27th, 2015, 2:38 pm
Re: Syncing skins
Thanks  I'm never out of ideas, LOL.
Working on it as we "speak"...
Done  it works. However, you have another mistake (sorry about that, I'm direct with people): when resizing the balls, the digits are misplaced, and probably not resized as well (my guess is that they retain their default original position). I tried increasing the size of the balls to 400 and the digits were not centered on the balls and some were a bit outside the ball area. Thinking about it, I'm not sure this is a mistake, since initially the skin wasn't made to show digits on the balls, so when you added that feature, you probably forgot to adjust the digits' position and/or size to the new position and/or dimension of the balls...balala wrote: ↑March 15th, 2019, 10:17 pmMy mistake. A DynamicVariables=1 option is required on the newly added [MeasureTime1Digit], [MeasureTime2Digit], [MeasureTime3Digit], [MeasureTime4Digit] and [MeasureTime5Digit] measures. Add them and the digits will always show the actual time. Sorry for the mistake...
That being said, I know a bit about Newton's cradle, so I assume the balls stoping their movement after a while is intentional (and physically correct), right?