It is currently April 24th, 2024, 4:46 pm

Music In Circles [WIP]

Media controls, music players, video and animated visualizers
User avatar
FreeRaider
Posts: 826
Joined: November 20th, 2012, 11:58 pm

Music In Circles [WIP]

Post by FreeRaider »

I'd like to share this skin,which it is still in "work in progress".
Currently it provides information on the volume (which you can set), on the progress "bar", on the title and artist of the song, and on player state (paused / playing).

It uses Chameleon Plugin by Socks the Fox and NowPlaying Plugin.

P.s.: You can change the "myplayer" variable with your favorite media player (if supported)

Code: Select all

[Rainmeter]
Update=1000
DynamicWindowSize=1
AccurateText=1

[Metadata]
Name=Music In Circles
Author=FreeRaider
Information=[Work In Progress] A simple player skin using roundline and Chameleon Plugin by Socks the Fox  ( https://forum.rainmeter.net/viewtopic.php?f=18&t=21655 ).
License=Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0)
Version=2016.05.10.0.001b

[Variables]
Radius=60
PosX=1
PosY=#Radius#
StartRotationAngle=20
CircleRotationAngle=320
MyPlayer=WMP

[ChameleonDesktop]
Measure=Plugin
Plugin=Chameleon
Type=Desktop

[MeasureColourDark2]
Measure=Plugin
Plugin=Chameleon
Parent=ChameleonDesktop
Format=Dec
Color=Dark2

[MeasureColourLight1]
Measure=Plugin
Plugin=Chameleon
Parent=ChameleonDesktop
Format=Dec
Color=Light1

[MeasureColourLight2]
Measure=Plugin
Plugin=Chameleon
Parent=ChameleonDesktop
Format=Dec
Color=Light2

[MeasurePlayer]
Measure=Plugin
Plugin=NowPlaying
PlayerName=#MyPlayer#
PlayerType=TITLE


[MeasurePlayerArtist]
Measure=Plugin
Plugin=NowPlaying
PlayerName=[MeasurePlayer]
PlayerType=ARTIST
SubStitute="":"N/A"

[MeasurePlayerVolume]
Measure=Plugin
Plugin=NowPlaying
PlayerName=[MeasurePlayer]
PlayerType=VOLUME
RegExpSubstitute=1
Substitute="^(\d)$":"0\1"

[MeasurePlayerProgress]
Measure=Plugin
Plugin=NowPlaying
PlayerName=[MeasurePlayer]
PlayerType=PROGRESS

[MeasurePlayerPlay/Pause]
Measure=Plugin
Plugin=NowPlaying
PlayerName=[MeasurePlayer]
PlayerType=STATE
Substitute="0":"Stopped","1":"Playing","2":"Paused"

[MeasureAngle]
Measure=Calc
Formula=( Asin ( [MeterPlayerVolume:H] / (2 * #radius#) ) )
DynamicVariables=1

[MeasureATAN2]
Measure=Calc
Formula=0.20
IfCondition=(#CircleRotationAngle# < 360 )
IfTrueAction=[!SetOption MeasureATAN2 Formula "( ((Atan2((#PosY# - #Radius#),(#PosX# - #Radius#))) < 0 ? (PI + Atan2((#PosY# - #Radius#),(#PosX# - #Radius#)) + PI - Rad((#StartRotationAngle#)) ) : (Atan2((#PosY# - #Radius#),(#PosX# - #Radius#)) - Rad((#StartRotationAngle#)))) / Rad(#CircleRotationAngle#) )"]
IfFalseAction=[!SetOption MeasureATAN2 Formula "( ( ( Atan2( (#PosY# - #Radius#),(#PosX# - #Radius#)) ) < 0 ? ( PI + Atan2( (#PosY# - #Radius#),(#PosX# - #Radius#)) + PI  ) : ( Atan2( (#PosY# - #Radius#),(#PosX# - #Radius#)) ) ) / ( Rad(360) ) )"]
IfConditionMode=1
DynamicVariables=1
OnChangeAction=[!UpdateMeasure "MeasureVolume"][!Redraw *]

[MeasureVolume]
Measure=Calc
Formula=([MeasureATAN2:2]*100)
MinValue=0
MaxValue=100
DynamicVariables=1
OnChangeAction=[!CommandMeasure MeasurePlayer "SetVolume [MeasureVolume]"][!Redraw *]

[CircleBackground]
Meter=Roundline
X=0 
Y=0
W=( #Radius# * 2.0)
H=( #Radius# * 2.0)
StartAngle=( Rad(#StartRotationAngle#) )
RotationAngle=( Rad(#CircleRotationAngle#) )
LineLength=( 1.0 * #Radius# )
LineStart=( 0.95 * #Radius# )
LineColor=[MeasureColourDark2],255
Solid=1
AntiAlias=1
DynamicVariables=1
LeftMouseUpAction=[!SetVariable PosX "$MouseX$"][!SetVariable PosY "$MouseY$"]


[Circle]
Meter=Roundline
MeasureName=MeasureATAN2
X=0 
Y=0
W=( #Radius# * 2.0)
H=( #Radius# * 2.0)
StartAngle=( Rad(#StartRotationAngle#) )
RotationAngle=( Rad(#CircleRotationAngle#) )
LineLength=( 0.90 * #Radius# )
LineStart=( 0.50 * #Radius# )
LineColor=[MeasureColourLight1],255
Solid=1
AntiAlias=1
DynamicVariables=1

[MeterPlayerVolume]
Meter=String
MeasureName=MeasurePlayerVolume
X=( #radius# + 0.50 * #radius# * cos( [MeasureAngle] ) - [MeterPlayerVolume:W] - ( #Radius# * 0.10 )  )  
Y=(#Radius# - [MeterPlayerVolume:H] /2)
FontSize=( ( #radius# * 11 ) / 70  )
FontColor=[MeasureColourLight2],255
FontFace=Tahoma
StringAlign=Left
StringStyle=Bold
Text="Volume#CRLF#    %1"
AntiAlias=1
DynamicVariables=1

[MeterBar]
Meter=Image
X=0
Y=(2.0 * #Radius# + 5)
W=(4.0 * #Radius#)
H=[MeterString:H]
SolidColor=[MeasureColourDark2],255
DynamicVariables=1

[MeterString]
Meter=String
MeasureName=MeasurePlayer
MeasureName2=MeasurePlayerArtist
X=(([MeterBar:W]-[MeterString:W])/2)r
Y=(([MeterBar:H]-[MeterString:H])/2)r
FontSize=( ( #radius# * 11 ) / 70  )
FontColor=[MeasureColourLight2],255
FontFace=Tahoma
StringAlign=Left
StringStyle=Bold
Text="%1#CRLF#%2"
AntiAlias=1
DynamicVariables=1

[CircleBackgroundProgress]
Meter=Roundline
X=((2.0 * #Radius#) + 5)
Y=0
W=( #Radius# * 2.0)
H=( #Radius# * 2.0)
StartAngle=( Rad(290) )
RotationAngle=( Rad(320) )
LineLength=( 1.0 * #Radius# )
LineStart=( 0.95 * #Radius# )
LineColor=[MeasureColourLight2],255
Solid=1
AntiAlias=1
DynamicVariables=1

[CircleProgress]
Meter=Roundline
MeasureName=MeasurePlayerProgress
X=((2.0 * #Radius#) + 5)
Y=0
W=( #Radius# * 2.0)
H=( #Radius# * 2.0)
StartAngle=( Rad(290) )
RotationAngle=( Rad(#CircleRotationAngle#) )
LineLength=( 0.90 * #Radius# )
LineStart=( 0.50 * #Radius# )
LineColor=[MeasureColourDark2],255
Solid=1
AntiAlias=1
DynamicVariables=1

[MeterPlayerProgress]
Meter=String
MeasureName=MeasurePlayerProgress
X=( #radius# + 0.50 * #radius# * cos( Rad(45) ) - [MeterPlayerProgress:W] - ( #Radius# * 0.05 ) - 5 )r  
Y=(#Radius# - [MeterPlayerProgress:H] /2)r
FontSize=( ( #radius# * 11 ) / 70  )
FontColor=[MeasureColourLight2],255
FontFace=Tahoma
StringAlign=Left
StringStyle=Bold
Text="%1%"
AntiAlias=1
DynamicVariables=1


[CircleBackgroundState]
Meter=Roundline
X=0
Y=(( 2 * #Radius#) + 10 + [MeterBar:H])
W=( #Radius# * 2.0)
H=( #Radius# * 2.0)
StartAngle=( Rad(200) )
RotationAngle=( Rad(320) )
LineLength=( 1.0 * #Radius# )
LineStart=( 0.95 * #Radius# )
LineColor=[MeasureColourLight2],255
Solid=1
AntiAlias=1
DynamicVariables=1

[CircleState]
Meter=Roundline
X=0r
Y=0r
W=( #Radius# * 2.0)
H=( #Radius# * 2.0)
StartAngle=( Rad(200) )
RotationAngle=( Rad(#CircleRotationAngle#) )
LineLength=( 0.90 * #Radius# )
LineStart=( 0.50 * #Radius# )
LineColor=[MeasureColourDark2],255
Solid=1
AntiAlias=1
LeftMouseUpAction=[!CommandMeasure MeasurePlayer "PlayPause"]
DynamicVariables=1

[MeterStatus]
Meter=String
MeasureName=MeasurePlayerPlay/Pause
X=0r
Y=(( 3 * #Radius#) + 10 + [MeterBar:H] - [MeterStatus:H]/2)
FontSize=( ( #radius# * 11 ) / 70  )
FontColor=[MeasureColourLight1],255
FontFace=Tahoma
StringAlign=Left
StringStyle=Bold
Text="%1"
AntiAlias=1
DynamicVariables=1
User avatar
eclectic-tech
Rainmeter Sage
Posts: 5406
Joined: April 12th, 2012, 9:40 pm
Location: Cedar Point, Ohio, USA

Re: Music In Circles [WIP]

Post by eclectic-tech »

Any update on this? ...

I like what you have started! :thumbup:

If I can suggest, for symmetry, you might consider putting the artist and title in a circle to the lower right; this would eliminate the rectangle in the middle and keep everything in 'Circles' :D

It is difficult (for me) to easily set the volume level since it only reacts when the thin line is clicked; perhaps a slightly thicker line or a nearly invisible image that occupies the same area same as the volume display??

On the duration circle, you might consider modifying it so a click would toggle between elapsed and remaining percents, and possibly an option to show time versus percent in the center? ... Now I've gone too far! :twisted:

Hope you haven't given up on this one... Nice work! :great:

It makes my head hurt just looking at your circle formulas! :lol:
User avatar
FreeRaider
Posts: 826
Joined: November 20th, 2012, 11:58 pm

Re: Music In Circles [WIP]

Post by FreeRaider »

I work on it in the free moments (very few to be honest). I'll consider your suggestions for a future release.

Thank you for your interest.
User avatar
eclectic-tech
Rainmeter Sage
Posts: 5406
Joined: April 12th, 2012, 9:40 pm
Location: Cedar Point, Ohio, USA

Re: Music In Circles [WIP]

Post by eclectic-tech »

Yeah, there never seems to be enough free time! :)

I look forward to any updates. No hurry :great: