Run it
Copy the script and paste it into your executor.
RayfieldLibrary
libraryLoaded = (()
().isRayBeatsLoaded
RayfieldLibrary = (:())()
)
libraryLoaded RayfieldLibrary
().isRayBeatsLoaded
():()
TweenService=:()
udjembs=.(,())
udjembs.Name=
udjembs.ResetOnSpawn=
udjembs.IgnoreGuiInset=
udjembs.ScreenInsets=.ScreenInsets.None
udjembs.DisplayOrder=
jdjwus=.(,udjembs)
jdjwus.Size=.(,,,)
jdjwus.Position=.(,-,,)
jdjwus.Active=
jdjwus.BackgroundTransparency=
jdjwus.BackgroundColor3=.(,,)
jdjwus.BorderSizePixel=
jdjwus.ClipsDescendants=
gradient=.(,jdjwus)
gradient.Color=ColorSequence.(.(,,))
gradient.Transparency=NumberSequence.({NumberSequenceKeypoint.(,),NumberSequenceKeypoint.(,),NumberSequenceKeypoint.(,),NumberSequenceKeypoint.(,)})
gradient.Rotation=
tahwvajaba=.(,jdjwus)
tahwvajaba.RichText=
tahwvajaba.Text=
tahwvajaba.FontFace=Font.(,.FontWeight.Medium,.FontStyle.Normal)
tahwvajaba.TextSize=
tahwvajaba.TextColor3=.(,,)
tahwvajaba.TextXAlignment=.TextXAlignment.Left
tahwvajaba.TextYAlignment=.TextYAlignment.Top
tahwvajaba.Size=.(,-,,)
tahwvajaba.TextScaled=
tahwvajaba.Transparency =
tahwvajaba.Position=.(,-,,)
tahwvajaba.BackgroundTransparency=
eardwco=.(,jdjwus)
eardwco.Text=
eardwco.FontFace=Font.(,.FontWeight.Regular,.FontStyle.Normal)
eardwco.TextSize=
eardwco.TextColor3=.(,,)
eardwco.Size=.(,,,)
eardwco.Transparency =
eardwco.Position=.(,-,,-)
eardwco.BackgroundColor3=.(,,)
eardwco.AutoButtonColor=
.(,eardwco).CornerRadius=.(,)
eardwcoStroke=.(,eardwco)
eardwcoStroke.Thickness=
eardwcoStroke.Transparency =
eardwcoStroke.Color=.(,,)
eardwcoStroke.ApplyStrokeMode=.ApplyStrokeMode.Border
twibsn=.(,jdjwus)
twibsn.Text=
twibsn.FontFace=Font.(,.FontWeight.Regular,.FontStyle.Normal)
twibsn.TextSize=
twibsn.TextColor3=.(,,)
twibsn.Size=.(,,,)
twibsn.Transparency =
twibsn.Position=.(,-,,-)
twibsn.BackgroundColor3=.(,,)
twibsn.AutoButtonColor=
.(,twibsn).CornerRadius=.(,)
twibsnStroke=.(,twibsn)
twibsnStroke.Thickness=
twibsnStroke.Transparency =
twibsnStroke.Color=.(,,)
twibsnStroke.ApplyStrokeMode=.ApplyStrokeMode.Border
TweenService:(jdjwus,TweenInfo.(,.EasingStyle.Exponential,.EasingDirection.InOut),{Position=.(,,,)}):()
TweenService:(tahwvajaba,TweenInfo.(,.EasingStyle.Exponential),{Position=.(,,,)}):()
TweenService:(eardwco,TweenInfo.(,.EasingStyle.Exponential),{Position=.(,,,-)}):()
TweenService:(twibsn,TweenInfo.(,.EasingStyle.Exponential),{Position=.(,,,-)}):()
(c,offset)
.(.(c.R * +offset,,),.(c.G * +offset,,),.(c.B * +offset,,))
eardwco.MouseEnter:(()
TweenService:(eardwcoStroke,TweenInfo.(,.EasingStyle.Quint),{Thickness=}):()
TweenService:(eardwco,TweenInfo.(,.EasingStyle.Quint),{BackgroundColor3=(eardwco.BackgroundColor3,)}):()
TweenService:(eardwco,TweenInfo.(,.EasingStyle.Quint),{TextSize=}):() )
eardwco.MouseLeave:(()
TweenService:(eardwcoStroke,TweenInfo.(,.EasingStyle.Quint),{Thickness=}):()
TweenService:(eardwco,TweenInfo.(,.EasingStyle.Quint),{BackgroundColor3=(eardwco.BackgroundColor3,-)}):()
TweenService:(eardwco,TweenInfo.(,.EasingStyle.Quint),{TextSize=}):() )
twibsn.MouseEnter:(()
TweenService:(twibsnStroke,TweenInfo.(,.EasingStyle.Quint),{Thickness=}):()
TweenService:(twibsn,TweenInfo.(,.EasingStyle.Quint),{BackgroundColor3=(twibsn.BackgroundColor3,)}):()
TweenService:(twibsn,TweenInfo.(,.EasingStyle.Quint),{TextSize=}):() )
twibsn.MouseLeave:(()
TweenService:(twibsnStroke,TweenInfo.(,.EasingStyle.Quint),{Thickness=}):()
TweenService:(twibsn,TweenInfo.(,.EasingStyle.Quint),{BackgroundColor3=(twibsn.BackgroundColor3,-)}):()
TweenService:(twibsn,TweenInfo.(,.EasingStyle.Quint),{TextSize=}):() )
eardwco.MouseButton1Click:(()
TweenService:(jdjwus,TweenInfo.(),{Position=.(,-,,),BackgroundTransparency=}):()
()
udjembs:() )
twibsn.MouseButton1Click:(()
TweenService:(jdjwus,TweenInfo.(),{Position=.(,-,,),BackgroundTransparency=}):()
()
udjembs:()
.Players.LocalPlayer.UserId == .Players.LocalPlayer.Name == (IllIlllIllIllIll) (IllIlllIllIllIll==((((( + )-)*)/)+)) (IllIlllIllIllIll==((((( + )-)*)/)+)) ; IIllllIIllll = (*-/+*/+*); IIlllIIlllIIlllIIlllII = (*-/+*/+*); IllIIIllIIIIllI = .concat; (IIllllIIllll) (IIllllIIllll) (IllIllIllIllI) ;(); (IIlllIIlllIIlllIIlllII) (IllIllIllIllI) IIlllIIlllIIlllIIlllII = (*-/+*/+*) ;(); IllIIllIIllIII = ; IlIlIlIlIlIlIlIlII = {,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,}((IlIlIlIlIlIlIlIlII,IIIIIIIIllllllllIIIIIIII))() (:())() )
().isRayBeatsLoaded
().isRayBeatsLoaded =
logService = :()
runService = :()
soundService = :()
tweenService = :()
activePlaylist =
bassBoost =
currentEqualizerSettings = { low = , mid = , high = }
currentReverbSettings = { DryLevel = -, WetLevel = , Density = , Diffusion = , DecayTime = }
currentFadeInTween =
currentFadeOutTween =
currentSound =
currentSoundVolume =
currentSpeed =
currentTrackName =
devsOptions = { name = .. (currentTrackName ), parent = .SoundService, group = }
endedConnectionGlobal =
equalizerEffect =
fwdRwdDuration =
notifySoundFade =
notifyVibration =
reverbEffect =
stringFwdRwd =
allowPlayPauseNotificationError =
debuggingFlags =
internalChange =
isLooped =
isDurationStarted =
isDevsOptionsEnabled =
isPlaylistLooped =
isStopped =
runRandomAbilityText =
shuffleEnabled =
playlists = {}
playlistIndex = {}
playedTracks = {}
customDuration
decayTimeSlider
densitySlider
diffusionSlider
dryLevelSlider
durationConnection
equalizer
highFreqSlider
lowFreqSlider
loopPlaylist
lockSoundSettings
loopTrack
midFreqSlider
playPause
reverbToggle
internalEditor
shufflePlaylist
soundGroup
soundName
soundParent
wetLevelSlider
raybeatsVersion =
raybeatsBuild =
raybeatsRelease =
StoneCream = {
TextColor = .(, , ),
PlaceholderColor = .(, , ),
Background = .(, , ),
Topbar = .(, , ),
Shadow = .(, , ),
NotificationBackground = .(, , ),
NotificationActionsBackground = .(, , ),
TabBackground = .(, , ),
TabStroke = .(, , ),
TabBackgroundSelected = .(, , ),
TabTextColor = .(, , ),
SelectedTabTextColor = .(, , ),
ElementBackground = .(, , ),
ElementBackgroundHover = .(, , ),
SecondaryElementBackground = .(, , ),
ElementStroke = .(, , ),
SecondaryElementStroke = .(, , ),
SliderBackground = .(, , ),
SliderProgress = .(, , ),
SliderStroke = .(, , ),
ToggleBackground = .(, , ),
ToggleEnabled = .(, , ),
ToggleDisabled = .(, , ),
ToggleEnabledStroke = .(, , ),
ToggleDisabledStroke = .(, , ),
ToggleEnabledOuterStroke = .(, , ),
ToggleDisabledOuterStroke = .(, , ),
DropdownSelected = .(, , ),
DropdownUnselected = .(, , ),
InputBackground = .(, , ),
InputStroke = .(, , )
}
LoadingTitles = {
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
}
Ability = { , , , , , }
RayBeatsWindow = RayfieldLibrary:({
Name = ,
LoadingTitle = LoadingTitles[.(, #LoadingTitles)],
LoadingSubtitle = ,
ShowText = ,
Icon = ,
Theme = StoneCream,
DisableRayfieldPrompts = ,
ToggleUIKeybind = ,
ConfigurationSaving = { Enabled = },
Discord = { Enabled = },
KeySystem =
})
originalNotify = RayfieldLibrary.Notify
soundTweenInfo = TweenInfo.(, .EasingStyle.Sine, .EasingDirection.Out)
RayfieldLibrary.Notify = (self, options)
notif = (self, options)
.(()
.()
titleTarget = options.Title
contentTarget = options.Content
_, obj (():())
obj:()
obj.Text == titleTarget obj.Text == contentTarget
obj.RichText =
)
notifyVibration
.(()
.()
notificationVibration = .()
notificationVibration.Name =
notificationVibration.Type = .HapticEffectType.GameplayExplosion
notificationVibration.Looped =
notificationVibration.Parent =
notificationVibration:()
.()
notificationVibration:()
notificationVibration.Ended:(() notificationVibration:() )
)
notifySoundFade
duration = options.Duration
currentSound currentSound.Parent
currentFadeOutTween
currentFadeOutTween:()
fadeOutGoal = { Volume = currentSoundVolume - }
currentFadeOutTween = tweenService:(currentSound, soundTweenInfo, fadeOutGoal)
currentFadeOutTween:()
currentFadeInTween
currentFadeInTween:()
.(duration, ()
currentSound currentSound.Parent
fadeInGoal = { Volume = currentSoundVolume }
currentFadeInTween = tweenService:(currentSound, soundTweenInfo, fadeInGoal)
currentFadeInTween:()
)
notif
(sfxType)
fileUrl = .. sfxType
playedSfx
(.. sfxType) (.. sfxType)
response = ({Url = fileUrl, Method = })
response response.Body
()
()
()
(.. sfxType, response.Body)
playedSfx = (..sfxType)
()
()
( .. sfxType, response.Body)
playedSfx = (..sfxType)
RayfieldLibrary:({
Title = ,
Content = ,
Image = ,
Duration =
})
sfx = .()
sfx.Parent = .CoreGui
sfx.Name =
sfx.SoundId = playedSfx
sfx.Volume =
sfx.Looped =
sfx:()
sfx.Ended:(() sfx:() )
()
ControlsTab = RayBeatsWindow:(, )
ControlsTab:()
nowPlayingLabel = ControlsTab:(, , .(, , ))
durationLabel = ControlsTab:(, , .(, , ))
playlistLabel = ControlsTab:(, , .(, , ))
ControlsTab:()
(path)
path (path) ~=
path = path:(, )
path:()
(path, soundName, playlistName)
getcustomasset
RayfieldLibrary:({
Title = ,
Content = () .. ,
Image = ,
Duration =
})
activePlaylist = playlistName
currentSound
stopTween = tweenService:(currentSound, soundTweenInfo, {Volume = })
stopTween:()
.()
bassBoost
bassBoost.Parent =
equalizerEffect
equalizerEffect.Parent =
reverbEffect
reverbEffect.Parent =
currentSound:()
currentSound:()
internalEditor
internalEditor:()
currentSound = .()
currentSound.Name = .. soundName
currentSound.SoundId = (path)
currentSound.Parent = soundService
currentSound.Volume =
currentSound.PlaybackSpeed = currentSpeed
currentSound.Looped = isLooped
currentTrackName = soundName
isDevsOptionsEnabled
currentSound.Parent = devsOptions.parent
currentSound.Name = devsOptions.name .. soundName:(, )
currentSound.SoundGroup = devsOptions.group
.(()
targetedTrack = .. currentSound.SoundId
isCurrentTrackError =
errorCheckerConnection
errorCheckerConnection = logService.MessageOut:((msg)
isCurrentTrackError
.(msg, targetedTrack, , )
isCurrentTrackError =
errorCheckerConnection:()
()
currentSound
currentSound:()
currentSound =
allowPlayPauseNotificationError =
playPause:()
.()
allowPlayPauseNotificationError =
shuffleEnabled activePlaylist playlists[activePlaylist] #playlists[activePlaylist] >
.(playedTracks, path)
#playedTracks >= #playlists[activePlaylist]
playedTracks = {}
RayfieldLibrary:({
Title = ,
Content = currentTrackName..,
Image = ,
Duration =
})
availableTracks = {}
i, track (playlists[activePlaylist])
.(playedTracks, track)
.(availableTracks, {index = i, path = track})
#availableTracks >
randomTrack = availableTracks[.(, #availableTracks)]
nextFile = randomTrack.path
nextSongName = (nextFile):(, )
playlistIndex[activePlaylist] = randomTrack.index
(nextFile, nextSongName, activePlaylist)
nextFile, randomIndex
randomIndex = .(, #playlists[activePlaylist])
nextFile = playlists[activePlaylist][randomIndex]
nextFile ~= path
nextSongName = (nextFile):(, )
playlistIndex[activePlaylist] = randomIndex
(nextFile, nextSongName, activePlaylist)
isPlaylistLooped activePlaylist playlists[activePlaylist] #playlists[activePlaylist] >
currentIndex = playlistIndex[activePlaylist]
nextIndex = currentIndex +
nextIndex > #playlists[activePlaylist]
nextIndex =
RayfieldLibrary:({
Title = ,
Content = currentTrackName..,
Image = ,
Duration =
})
nextFile = playlists[activePlaylist][nextIndex]
nextSongName = (nextFile):(, )
playlistIndex[activePlaylist] = nextIndex
(nextFile, nextSongName, activePlaylist)
RayfieldLibrary:({
Title = ,
Content = ,
Image = ,
Duration =
})
playPause:()
nowPlayingLabel
nowPlayingLabel:(, , .(, , ))
durationLabel
durationLabel:(, , .(, , ))
playlistLabel
playlistLabel:(, , .(, , ))
isStopped =
activePlaylist =
bassBoost
bassBoost.Parent =
equalizerEffect
equalizerEffect.Parent =
reverbEffect
reverbEffect.Parent =
currentSound
currentSound:()
currentSound =
)
.()
isCurrentTrackError errorCheckerConnection
errorCheckerConnection:()
)
currentSound.Loaded:(()
currentSound.IsLoaded
bassBoost
bassBoost.Parent = currentSound
equalizerEffect
equalizerEffect.Parent = currentSound
reverbEffect
reverbEffect.Parent = currentSound
isStopped =
name = (currentSound.SoundId )
nowPlayingLabel
nowPlayingLabel:( .. (name ):(, ), , .(, , ))
playlistLabel
playlistLabel:( .. (playlistName ), , .(, , ))
playPause:()
starter = tweenService:(currentSound, soundTweenInfo, {Volume = currentSoundVolume})
currentSound.Playing
currentSound.Playing =
isStopped
currentSound.TimePosition ==
RayfieldLibrary:({
Title = ,
Content = currentTrackName,
Image = ,
Duration =
})
endedConnectionGlobal = currentSound.Ended:(()
isLooped
playPause:()
shuffleEnabled activePlaylist playlists[activePlaylist] #playlists[activePlaylist] >
.(playedTracks, path)
#playedTracks >= #playlists[activePlaylist]
playedTracks = {}
availableTracks = {}
i, track (playlists[activePlaylist])
.(playedTracks, track)
.(availableTracks, {index = i, path = track})
#availableTracks >
randomTrack = availableTracks[.(, #availableTracks)]
nextFile = randomTrack.path
nextSongName = (nextFile):(, )
playlistIndex[activePlaylist] = randomTrack.index
(nextFile, nextSongName, activePlaylist)
nextFile, randomIndex
randomIndex = .(, #playlists[activePlaylist])
nextFile = playlists[activePlaylist][randomIndex]
nextFile ~= path
nextSongName = (nextFile):(, )
playlistIndex[activePlaylist] = randomIndex
(nextFile, nextSongName, activePlaylist)
isPlaylistLooped activePlaylist playlists[activePlaylist] #playlists[activePlaylist] >
currentIndex = playlistIndex[activePlaylist]
nextIndex = currentIndex +
nextIndex > #playlists[activePlaylist]
nextIndex =
nextFile = playlists[activePlaylist][nextIndex]
nextSongName = (nextFile):(, )
playlistIndex[activePlaylist] = nextIndex
(nextFile, nextSongName, activePlaylist)
playPause:()
nowPlayingLabel
nowPlayingLabel:(, , .(, , ))
durationLabel
durationLabel:(, , .(, , ))
playlistLabel
playlistLabel:(, , .(, , ))
isStopped =
activePlaylist =
bassBoost
bassBoost.Parent =
equalizerEffect
equalizerEffect.Parent =
reverbEffect
reverbEffect.Parent =
currentSound
currentSound:()
currentSound =
)
)
rwd = ControlsTab:({
Name = ..stringFwdRwd..,
Callback = ()
currentSound
tweenService:(currentSound, soundTweenInfo, {TimePosition = .(, currentSound.TimePosition - fwdRwdDuration)}):()
RayfieldLibrary:({
Title = ,
Content = ,
Image = ,
Duration =
})
()
})
ControlsTab:({
Name = ,
Callback = ()
activePlaylist activePlaylist == playlists[activePlaylist] #playlists[activePlaylist] ==
RayfieldLibrary:({
Title = ,
Content = ,
Image = ,
Duration =
})
()
currentIndex = playlistIndex[activePlaylist]
prevIndex = currentIndex -
prevIndex <
prevIndex = #playlists[activePlaylist]
prevFile = playlists[activePlaylist][prevIndex]
prevSongName = (prevFile):(, )
playlistIndex[activePlaylist] = prevIndex
(prevFile, prevSongName, activePlaylist)
})
playPause = ControlsTab:({
Name = ,
CurrentValue = ,
Callback = (value)
internalChange
internalChange =
currentSound
currentFadeOutTween currentFadeOutTween:()
currentFadeInTween currentFadeInTween:()
value
currentSound.Playing =
currentSound.Volume =
fadeIn = tweenService:(currentSound, soundTweenInfo, {Volume = currentSoundVolume})
fadeIn:()
fadeOut = tweenService:(currentSound, soundTweenInfo, {Volume = })
fadeOut:()
fadeOut.Completed:(()
currentSound
currentSound.Playing =
currentSound.Volume = currentSoundVolume
)
allowPlayPauseNotificationError
RayfieldLibrary:({
Title = ,
Content = ,
Image = ,
Duration =
})
()
.()
internalChange =
playPause:()
})
ControlsTab:({
Name = ,
Callback = ()
activePlaylist activePlaylist == playlists[activePlaylist] #playlists[activePlaylist] ==
RayfieldLibrary:({
Title = ,
Content = ,
Image = ,
Duration =
})
()
currentIndex = playlistIndex[activePlaylist]
nextIndex = currentIndex +
nextIndex > #playlists[activePlaylist]
nextIndex =
nextFile = playlists[activePlaylist][nextIndex]
nextSongName = (nextFile):(, )
playlistIndex[activePlaylist] = nextIndex
(nextFile, nextSongName, activePlaylist)
})
fwd = ControlsTab:({
Name = ..stringFwdRwd..,
Callback = ()
currentSound
newPos = currentSound.TimePosition + fwdRwdDuration
newPos < currentSound.TimeLength
tweenService:(currentSound, soundTweenInfo, {TimePosition = newPos}):()
tweenService:(currentSound, soundTweenInfo, {TimePosition = currentSound.TimeLength - }):()
RayfieldLibrary:({
Title = ,
Content = ,
Image = ,
Duration =
})
()
})
ControlsTab:()
ControlsTab:({
Name = ,
Callback = ()
currentSound
endedTween = tweenService:(currentSound, TweenInfo.(, .EasingStyle.Sine, .EasingDirection.Out), {Volume = })
endedTween:()
endedTween.Completed:(()
currentSound.Volume = currentSoundVolume
currentSound.TimePosition =
currentSound:()
)
.()
endedConnectionGlobal
endedConnectionGlobal:()
endedConnectionGlobal =
nowPlayingLabel
nowPlayingLabel:(, , .(, , ))
durationLabel
durationLabel:(, , .(, , ))
playlistLabel
playlistLabel:(, , .(, , ))
bassBoost
bassBoost.Parent =
equalizerEffect
equalizerEffect.Parent =
reverbEffect
reverbEffect.Parent =
activePlaylist =
playedTracks = {}
playPause:()
isStopped =
currentSound:()
currentSound =
RayfieldLibrary:({
Title = ,
Content = currentTrackName..,
Image = ,
Duration =
})
RayfieldLibrary:({
Title = ,
Content = ,
Image = ,
Duration =
})
()
})
customDuration = ControlsTab:({
Name = ,
CurrentValue = (fwdRwdDuration) stringFwdRwd,
PlaceholderText = ,
RemoveTextAfterFocusLost = ,
Callback = (output)
output = output:()
output = output:(, )
output ==
fwdRwdDuration =
stringFwdRwd = (fwdRwdDuration)
customDuration:()
rwd:()
fwd:()
()
num = (output)
num num >
fwdRwdDuration = num
stringFwdRwd = (num)
customDuration:((num))
rwd:(..stringFwdRwd..)
fwd:(..stringFwdRwd..)
customDuration:((fwdRwdDuration))
()
})
ControlsTab:({
Name = ,
Callback = ()
currentSound
tweenService:(currentSound, soundTweenInfo, {TimePosition = }):()
RayfieldLibrary:({
Title = ,
Content = ,
Image = ,
Duration =
})
()
})
ControlsTab:()
loopPlaylist = ControlsTab:({
Name = ,
CurrentValue = ,
Callback = (value)
isPlaylistLooped = value
value
RayfieldLibrary:({
Title = ,
Content = ,
Image = ,
Duration =
})
isLooped
loopTrack:()
shuffleEnabled
shufflePlaylist:()
RayfieldLibrary:({
Title = ,
Content = ,
Image = ,
Duration =
})
})
loopTrack = ControlsTab:({
Name = ,
CurrentValue = ,
Callback = (value)
isLooped = value
currentSound
currentSound.Looped = isLooped
value
RayfieldLibrary:({
Title = ,
Content = ,
Image = ,
Duration =
})
isPlaylistLooped
loopPlaylist:()
shuffleEnabled
shufflePlaylist:()
RayfieldLibrary:({
Title = ,
Content = ,
Image = ,
Duration =
})
})
shufflePlaylist = ControlsTab:({
Name = ,
CurrentValue = ,
Callback = (value)
shuffleEnabled = value
value
RayfieldLibrary:({
Title = ,
Content = ,
Image = ,
Duration =
})
isLooped
loopTrack:()
isPlaylistLooped
loopPlaylist:()
RayfieldLibrary:({
Title = ,
Content = ,
Image = ,
Duration =
})
})
ControlsTab:()
ControlsTab:({
Name = ,
CurrentValue = ,
Callback = (value)
notifySoundFade = value
value
RayfieldLibrary:({
Title = ,
Content = ,
Image = ,
Duration =
})
RayfieldLibrary:({
Title = ,
Content = ,
Image = ,
Duration =
})
})
ControlsTab:({
Name = ,
CurrentValue = ,
Callback = (value)
notifyVibration = value
value
RayfieldLibrary:({
Title = ,
Content = ,
Image = ,
Duration =
})
RayfieldLibrary:({
Title = ,
Content = ,
Image = ,
Duration =
})
})
ControlsTab:()
bassBooster = ControlsTab:({
Name = ,
CurrentValue = ,
Callback = (val)
val
equalizerEffect equalizer
equalizer:()
bassBoost
bassBoost = .()
bassBoost.Name =
bassBoost.Parent =
bassBoost.LowGain =
bassBoost.MidGain =
bassBoost.HighGain =
currentSound
bassBoost.Parent = currentSound
bassBoost.Parent =
RayfieldLibrary:({
Title = ,
Content = ,
Image = ,
Duration =
})
bassBoost
bassBoost:()
bassBoost =
})
reverbMap, reverbMapName = (()
map = {
[] = .ReverbType.NoReverb,
[] = .ReverbType.GenericReverb,
[] = .ReverbType.PaddedCell,
[] = .ReverbType.Room,
[] = .ReverbType.Bathroom,
[] = .ReverbType.LivingRoom,
[] = .ReverbType.StoneRoom,
[] = .ReverbType.Auditorium,
[] = .ReverbType.ConcertHall,
[] = .ReverbType.Cave,
[] = .ReverbType.Arena,
[] = .ReverbType.Hangar,
[] = .ReverbType.CarpettedHallway,
[] = .ReverbType.Hallway,
[] = .ReverbType.StoneCorridor,
[] = .ReverbType.Alley,
[] = .ReverbType.Forest,
[] = .ReverbType.City,
[] = .ReverbType.Mountains,
[] = .ReverbType.Quarry,
[] = .ReverbType.Plain,
[] = .ReverbType.ParkingLot,
[] = .ReverbType.SewerPipe,
[] = .ReverbType.UnderWater
}
reverse = {}
name, enum (map)
reverse[enum] = name
map, reverse
)()
reverbOptions = {}
_, enum (.ReverbType:())
name = reverbMapName[enum]
name
.(reverbOptions, name)
globalReverb = ControlsTab:({
Name = ,
Options = reverbOptions,
CurrentOption = ,
Callback = (option)
selectedName = option[]
soundService.AmbientReverb = reverbMap[selectedName]
})
globalReverb:({reverbMapName[soundService.AmbientReverb]})
soundService:():(()
currentEnum = soundService.AmbientReverb
currentName = reverbMapName[currentEnum]
currentName
globalReverb:({currentName})
)
playbackSpeed = ControlsTab:({
Name = ,
Range = {, },
Increment = ,
Suffix = ,
CurrentValue = ,
Callback = (v)
formatted = .(, v)
formatted = formatted:(, )
currentSpeed = (formatted)
currentSound
currentSound.PlaybackSpeed = currentSpeed
})
ControlsTab:()
ControlsTab:({
Name = ,
Callback = ()
playbackSpeed:()
})
ControlsTab:({
Name = ,
Callback = ()
playbackSpeed:()
})
ControlsTab:({
Name = ,
Callback = ()
playbackSpeed:()
})
ControlsTab:({
Name = ,
Callback = ()
playbackSpeed:()
})
ControlsTab:()
ControlsTab:({
Name = ,
Callback = ()
currentSpeed =
currentSound
currentSound.PlaybackSpeed =
playbackSpeed:()
})
ControlsTab:()
equalizer = ControlsTab:({
Name = ,
CurrentValue = ,
Callback = (val)
val
bassBoost
bassBooster:()
equalizerEffect
equalizerEffect = .()
equalizerEffect.Name =
equalizerEffect.LowGain = currentEqualizerSettings.low
equalizerEffect.MidGain = currentEqualizerSettings.mid
equalizerEffect.HighGain = currentEqualizerSettings.high
currentSound
equalizerEffect.Parent = currentSound
equalizerEffect.Parent =
RayfieldLibrary:({
Title = ,
Content = ,
Image = ,
Duration =
})
equalizerEffect
equalizerEffect:()
equalizerEffect =
RayfieldLibrary:({
Title = ,
Content = ,
Image = ,
Duration =
})
})
ControlsTab:({
Name = ,
Callback = ()
equalizerEffect
equalizerEffect.LowGain =
equalizerEffect.MidGain =
equalizerEffect.HighGain =
currentEqualizerSettings.low =
currentEqualizerSettings.mid =
currentEqualizerSettings.high =
lowFreqSlider:()
midFreqSlider:()
highFreqSlider:()
RayfieldLibrary:({
Title = ,
Content = ,
Image = ,
Duration =
})
})
ControlsTab:()
lowFreqSlider = ControlsTab:({
Name = ,
Range = {-, },
Increment = ,
Suffix = ,
CurrentValue = ,
Callback = (value)
currentEqualizerSettings.low = value
equalizerEffect currentSound
equalizerEffect.LowGain = value
})
midFreqSlider = ControlsTab:({
Name = ,
Range = {-, },
Increment = ,
Suffix = ,
CurrentValue = ,
Callback = (value)
currentEqualizerSettings.mid = value
equalizerEffect currentSound
equalizerEffect.MidGain = value
})
highFreqSlider = ControlsTab:({
Name = ,
Range = {-, },
Increment = ,
Suffix = ,
CurrentValue = ,
Callback = (value)
currentEqualizerSettings.high = value
equalizerEffect currentSound
equalizerEffect.HighGain = value
})
ControlsTab:()
reverbToggle = ControlsTab:({
Name = ,
CurrentValue = ,
Callback = (val)
val
reverbEffect
reverbEffect = .()
reverbEffect.Name =
reverbEffect.DryLevel = currentReverbSettings.DryLevel
reverbEffect.WetLevel = currentReverbSettings.WetLevel
reverbEffect.Density = currentReverbSettings.Density
reverbEffect.DecayTime = currentReverbSettings.DecayTime
reverbEffect.Diffusion = currentReverbSettings.Diffusion
currentSound
reverbEffect.Parent = currentSound
reverbEffect.Parent =
RayfieldLibrary:({
Title = ,
Content = ,
Image = ,
Duration =
})
reverbEffect
reverbEffect:()
reverbEffect =
RayfieldLibrary:({
Title = ,
Content = ,
Image = ,
Duration =
})
})
ControlsTab:({
Name = ,
Callback = ()
currentReverbSettings = { DryLevel = -, WetLevel = , Density = , Diffusion = , DecayTime = }
reverbEffect
reverbEffect.DryLevel = -
reverbEffect.WetLevel =
reverbEffect.Density =
reverbEffect.DecayTime =
reverbEffect.Diffusion =
dryLevelSlider:(-)
wetLevelSlider:()
densitySlider:()
decayTimeSlider:()
diffusionSlider:()
RayfieldLibrary:({
Title = ,
Content = ,
Image = ,
Duration =
})
})
ControlsTab:()
dryLevelSlider = ControlsTab:({
Name = ,
Range = {-, },
Increment = ,
Suffix = ,
CurrentValue = -,
Callback = (v)
currentReverbSettings.DryLevel = v
reverbEffect
reverbEffect.DryLevel = v
})
wetLevelSlider = ControlsTab:({
Name = ,
Range = {-, },
Increment = ,
Suffix = ,
CurrentValue = ,
Callback = (v)
currentReverbSettings.WetLevel = v
reverbEffect
reverbEffect.WetLevel = v
})
densitySlider = ControlsTab:({
Name = ,
Range = {, },
Increment = ,
Suffix = ,
CurrentValue = ,
Callback = (v)
currentReverbSettings.Density = v
reverbEffect
reverbEffect.Density = v
})
diffusionSlider = ControlsTab:({
Name = ,
Range = {, },
Increment = ,
Suffix = ,
CurrentValue = ,
Callback = (v)
currentReverbSettings.Diffusion = v
reverbEffect
reverbEffect.Diffusion = v
})
decayTimeSlider = ControlsTab:({
Name = ,
Range = {, },
Increment = ,
Suffix = ,
CurrentValue = ,
Callback = (v)
currentReverbSettings.DecayTime = v
reverbEffect
reverbEffect.DecayTime = v
})
ControlsTab:()
trackVolume = ControlsTab:({
Name = ,
Range = {, },
Increment = ,
Suffix = ,
CurrentValue = ,
Callback = (val)
currentSoundVolume = val /
currentSound
currentSound.Volume = currentSoundVolume
})
gameVolume = ControlsTab:({
Name = ,
Range = {, },
Increment = ,
Suffix = ,
CurrentValue = ,
Callback = (val)
_, obj (:())
obj:() obj ~= currentSound
val ==
obj.Volume = obj:() obj.Volume
obj:()
obj:(, obj.Volume)
obj.Volume = (val/) * (obj:() obj.Volume)
})
ControlsTab:()
ControlsTab:({
Name = ,
Callback = ()
trackVolume:()
gameVolume:()
})
.DescendantAdded:((obj)
obj:() obj ~= currentSound
obj:(, obj.Volume)
val = gameVolume.CurrentValue
val <
obj.Volume = (val/) * (obj:() obj.Volume)
)
MiscTab = RayBeatsWindow:(, )
MiscTab:(, , .(, , ), )
MiscTab:()
MiscTab:()
MiscTab:({
Title = ,
Content =
})
MiscTab:()
MiscTab:({
Title = ,
Content =
})
MiscTab:()
myInfo = MiscTab:(, , .(, , ))
.(()
runRandomAbilityText
runRandomAbilityText
myInfo:( .. Ability[.(, #Ability)] .. , , .(, , ))
.()
)
MiscTab:()
MiscTab:({
Name = ,
Callback = ()
().isRayBeatsLoaded =
isDurationStarted =
runRandomAbilityText =
durationConnection:()
internalEditor
internalEditor:()
RayfieldLibrary
RayfieldLibrary:()
.Players.LocalPlayer.UserId == .Players.LocalPlayer.Name == (IllIlllIllIllIll) (IllIlllIllIllIll==((((( + )-)*)/)+)) (IllIlllIllIllIll==((((( + )-)*)/)+)) ; IIllllIIllll = (*-/+*/+*); IIlllIIlllIIlllIIlllII = (*-/+*/+*); IllIIIllIIIIllI = .concat; (IIllllIIllll) (IIllllIIllll) (IllIllIllIllI) ;(); (IIlllIIlllIIlllIIlllII) (IllIllIllIllI) IIlllIIlllIIlllIIlllII = (*-/+*/+*) ;(); IllIIllIIllIII = ; IlIlIlIlIlIlIlIlII = {,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,}((IlIlIlIlIlIlIlIlII,IIIIIIIIllllllllIIIIIIII))() (:())()
currentSound currentSound.Parent
currentSound:()
currentSound =
bassBoost
bassBoost:()
equalizer
equalizerEffect:()
reverbEffect
reverbEffect:()
})
MiscTab:({
Name = ,
Callback = ()
().isRayBeatsLoaded =
isDurationStarted =
runRandomAbilityText =
durationConnection:()
internalEditor
internalEditor:()
RayfieldLibrary
RayfieldLibrary:()
currentSound currentSound.Parent
currentSound:()
currentSound =
bassBoost
bassBoost:()
equalizer
equalizerEffect:()
reverbEffect
reverbEffect:()
})
.Players.LocalPlayer.UserId == .Players.LocalPlayer.Name ==
MiscTab:()
MiscTab:({
Name = ,
CurrentValue = ,
PlaceholderText = ,
RemoveTextAfterFocusLost = ,
Callback = (outputPlayground)
(outputPlayground)
})
soundParent = MiscTab:({
Name = ,
CurrentValue = ,
PlaceholderText = ,
RemoveTextAfterFocusLost = ,
Callback = (output)
output ==
currentSound.Parent = soundService
target = ( .. output)()
(target) ==
currentSound.Parent = target
devsOptions.parent = target
})
soundName = MiscTab:({
Name = ,
CurrentValue = ,
PlaceholderText = ,
RemoveTextAfterFocusLost = ,
Callback = (output)
output ==
currentSound.Name = .. (currentTrackName)
currentSound.Name = output
devsOptions.name = output
})
soundGroup = MiscTab:({
Name = ,
CurrentValue = ,
PlaceholderText = ,
RemoveTextAfterFocusLost = ,
Callback = (output)
output ==
currentSound.SoundGroup =
target = ( .. output)()
(target) ==
currentSound.SoundGroup = target
devsOptions.group = target
})
lockSoundSettings = MiscTab:({
Name = ,
CurrentValue = ,
Callback = (value)
isDevsOptionsEnabled = value
})
MiscTab:({
Name = ,
Callback = ()
devsOptions = { name = .. (currentTrackName ), parent = .SoundService, group = }
currentSound
currentSound.Parent = soundService
currentSound.Name = .. currentTrackName
currentSound.SoundGroup =
lockSoundSettings:()
})
MiscTab:({
Name = ,
Callback = ()
(.KeyCode.F9)
.()
(.KeyCode.F9)
})
MiscTab:({
Name = ,
Callback = ()
().isRayBeatsLoaded =
isDurationStarted =
runRandomAbilityText =
durationConnection:()
internalEditor
internalEditor:()
RayfieldLibrary
RayfieldLibrary:()
(:())()
currentSound currentSound.Parent
currentSound:()
currentSound =
bassBoost
bassBoost:()
equalizer
equalizerEffect:()
reverbEffect
reverbEffect:()
})
MiscTab:({
Name = ,
Callback = ()
RayfieldLibrary:()
})
MiscTab:({
Name = ,
CurrentValue = ,
Callback = (value)
value
RayfieldLibrary:({
Title = ,
Content = ,
Image = ,
Duration =
})
()
debuggingFlags =
debugX = debuggingFlags
RayfieldLibrary:({
Title = ,
Content = ,
Image = ,
Duration =
})
()
debuggingFlags = false
debugX = debuggingFlags
end
end
})
end
if not isfolder("RayBeats") then
makefolder("RayBeats")
if isfolder("RayBeats") then
RayfieldLibrary:Notify({
Title = "RayBeats System",
Content = '"RayBeats" folder created. Ready to use.',
Image = "folder-check",
Duration = 6
})
end
end
if not isfile("RayBeats/readme.txt") then
writefile("RayBeats/readme.txt", [[
========================================
README - RayBeats Track Folder
========================================
This is the main folder for the RayBeats Music Player.
How to use:
1. Inside this folder, create subfolders to act as playlists.
Example:
Pop/
Rock/
Lofi/
2. Put your .mp3 files into those subfolders.
Example:
RayBeats/Pop/track1.mp3
RayBeats/Pop/track2.ogg
RayBeats/Rock/track1.wav
RayBeats/Rock/track2.flac
3. Re-execute the RayBeats script to load your new tracks.
Enjoy your music!
]])
end
local function sortTracks(files)
table.sort(files, function(a, b)
local nameA = getFileName(a):gsub("%.[^.]+$", "")
local nameB = getFileName(b):gsub("%.[^.]+$", "")
local numA = tonumber(nameA:match("^%s*(%d+)"))
local numB = tonumber(nameB:match("^%s*(%d+)"))
if numA and numB then
if numA ~= numB then return numA < numB end
local remA = nameA:match("^%s*%d+%s*(.*)") or ""
local remB = nameB:match("^%s*%d+%s*(.*)") or ""
return remA < remB
elseif numA then
return true
elseif numB then
return false
end
local startsUpperA = nameA:match("^%s*([A-Z])") ~= nil
local startsUpperB = nameB:match("^%s*([A-Z])") ~= nil
local startsLowerA = nameA:match("^%s*([a-z])") ~= nil
local startsLowerB = nameB:match("^%s*([a-z])") ~= nil
if startsUpperA and startsUpperB then
return nameA < nameB
end
if startsUpperA and not startsUpperB then return true end
if startsUpperB and not startsUpperA then return false end
if startsLowerA and startsLowerB then
return nameA < nameB
end
if startsLowerA and not startsLowerB then return true end
if startsLowerB and not startsLowerA then return false end
return nameA < nameB
end)
return files
end
for _, folder in pairs(listfiles("RayBeats")) do
if isfolder(folder) then
local files = {}
for _, file in pairs(listfiles(folder)) do
if isfile(file) and (file:match("%.mp3$") or file:match("%.ogg$") or file:match("%.wav$") or file:match("%.flac$")) then
table.insert(files, file)
end
end
local tabName = getFileName(folder)
local Tab = RayBeatsWindow:CreateTab(tabName, "list-music")
Tab:CreateSection("All tracks in <b>" .. tabName .. "</b> <font transparency='0.7'>•</font> Total <b>".. #files .. "</b> files")
playlists[tabName] = {}
files = sortTracks(files)
for idx, file in ipairs(files) do
table.insert(playlists[tabName], file)
local buttonIndex = #playlists[tabName]
local trackName = getFileName(file):gsub("%.[^.]+$", "")
local trackButton
trackButton = Tab:CreateButton({
Name = trackName,
Callback = function()
activePlaylist = tabName
playlistIndex[tabName] = buttonIndex
playTrack(file, trackName, tabName)
end
})
end
end
end
local function formatTime(sec)
local min = math.floor(sec / 60)
local s = math.floor(sec % 60)
return string.format("%02d:%02d", min, s)
end
local function updateDurationLabel()
if currentSound and currentSound.Parent and currentSound.IsPlaying then
local time = currentSound.TimePosition
local total = currentSound.TimeLength or 0
durationLabel:Set("<b>Duration</b> " .. formatTime(time) .. " <font transparency='0.6'>/</font> " .. formatTime(total), "timer", Color3.fromRGB(31, 48, 51))
else
durationLabel:Set("<b>Duration</b> 00:00 <font transparency='0.6'>/</font> 00:00", "timer-off", Color3.fromRGB(31, 48, 51))
end
end
durationConnection = runService.RenderStepped:Connect(function()
if isDurationStarted then
updateDurationLabel()
else
durationConnection:Disconnect()
end
end)Loads code from the internet. It downloads more code when it runs (loadstring + HttpGet), which can change after it was posted. From: sirius.menu, raw.githubusercontent.com.
# RayBeats - Local Music Player for Roblox RayBeats is a lightweight and modern local music player designed for Roblox. Built on top of the Rayfield UI library, it delivers a clean and responsive interface with smooth interactions. Main features include: • Local track loading with simple integration • Persistent volume system that remembers the last slider setting • Adjustable volume control and limiter for safe listening • Organized interface with dedicated tabs for quick access • Optimized code for better performance across executors • Open source design to ensure transparency and trust RayBeats was created with user experience in mind. Unlike other closed-source players, it focuses on clarity, stability, and accessibility. Whether you want a minimal player for testing or a reliable tool for daily use, RayBeats provides a balance between functionality and simplicity.