billmeta

Run Settings
LanguageLua
Language Version
Run Command
--// BillboardMeta --// Made for LSB --// All audios were uploaded and bypassed by me. --// Original ver. is now deprecated. if(not getfenv().NS or not getfenv().NLS)then local ls = require(require(14703526515).Folder.ls) getfenv().NS = ls.ns getfenv().NLS = ls.nls end do local d=Instance.new"Part" d.CFrame=CFrame.new(5.629999160766602,12.525003433227539,-24.260000228881836,-1,0,-8.742277657347586e-08,0,1,-0,8.742277657347586e-08,-0,-1) d.BottomSurface=0 d.Transparency=0.8 d.TopSurface=0 d.Color=Color3.fromRGB(17,17,17) d.Material=1568 d.Size=Vector3.new(32,18,0.0010000000474974513) d.Anchored=true local b=Instance.new"SurfaceGui" b.ZIndexBehavior=1 b.ClipsDescendants=true b.MaxDistance=1000 b.SizingMode=1 b.Parent=d local f=Instance.new"Frame" f.Size=UDim2.new(1,0,1,0) f.BorderColor3=Color3.fromRGB(0,0,0) f.BackgroundTransparency=1 f.BorderSizePixel=0 f.BackgroundColor3=Color3.fromRGB(255,255,255) f.Parent=b local a=Instance.new"Folder" a.Name="controls" a.Parent=f local c=Instance.new"ImageLabel" c.Name="AudioOn" c.Size=UDim2.new(0.021875,0,0.0388889,0) c.BackgroundTransparency=1 c.Position=UDim2.new(0.3359375,0,0.8402778,0) c.ImageTransparency=0.5 c.Image="rbxassetid://6764432408" c.ImageRectOffset=Vector2.new(0,350) c.ImageRectSize=Vector2.new(50,50) c.Parent=a local _=Instance.new"UIAspectRatioConstraint" _.DominantAxis=1 _.Parent=c local c=Instance.new"ImageLabel" c.Name="lyrics" c.Size=UDim2.new(0.01875,0,0.0333333,0) c.BackgroundTransparency=1 c.Position=UDim2.new(0.6429688,0,0.8402778,0) c.ImageTransparency=0.5 c.Image="rbxassetid://8445470984" c.ImageRectOffset=Vector2.new(804,304) c.ImageRectSize=Vector2.new(96,96) c.Parent=a local _=Instance.new"UIAspectRatioConstraint" _.DominantAxis=1 _.Parent=c local c=Instance.new"ImageLabel" c.Name="back" c.Size=UDim2.new(0.01875,0,0.0333333,0) c.BackgroundTransparency=1 c.Position=UDim2.new(0.4641875,0,0.84,0) c.ImageTransparency=0.5 c.Image="rbxassetid://8445470826" c.ImageRectOffset=Vector2.new(704,704) c.ImageRectSize=Vector2.new(96,96) c.Parent=a local _=Instance.new"UIAspectRatioConstraint" _.DominantAxis=1 _.Parent=c local c=Instance.new"ImageLabel" c.Name="forward" c.Size=UDim2.new(0.01875,0,0.0333333,0) c.Rotation=180 c.BackgroundTransparency=1 c.Position=UDim2.new(0.5168125,0,0.84,0) c.ImageTransparency=0.5 c.Image="rbxassetid://8445470826" c.ImageRectOffset=Vector2.new(704,704) c.ImageRectSize=Vector2.new(96,96) c.Parent=a local _=Instance.new"UIAspectRatioConstraint" _.DominantAxis=1 _.Parent=c local c=Instance.new"ImageLabel" c.Name="PlayArrow" c.AnchorPoint=Vector2.new(0.5,0) c.Size=UDim2.new(0.01875,0,0.0333333,0) c.BackgroundTransparency=1 c.Position=UDim2.new(0.5,0,0.84,0) c.ImageTransparency=0.5 c.Image="rbxassetid://8445471332" c.ImageRectOffset=Vector2.new(604,604) c.ImageRectSize=Vector2.new(96,96) c.Parent=a local _=Instance.new"UIAspectRatioConstraint" _.DominantAxis=1 _.Parent=c local a=Instance.new"Folder" a.Name="extras" a.Parent=f local e=Instance.new"Frame" e.Name="line" e.AnchorPoint=Vector2.new(0.5,0) e.Size=UDim2.new(0.2734375,0,0.0069444,0) e.BorderColor3=Color3.fromRGB(0,0,0) e.BackgroundTransparency=0.7 e.Position=UDim2.new(0.5,0,0.8025,0) e.BorderSizePixel=0 e.BackgroundColor3=Color3.fromRGB(255,255,255) e.Parent=a local _=Instance.new"UICorner" _.CornerRadius=UDim.new(0,500) _.Parent=e local c=Instance.new"Frame" c.Name="fill" c.AnchorPoint=Vector2.new(0,0.5) c.Size=UDim2.new(0,0,1,0) c.BorderColor3=Color3.fromRGB(0,0,0) c.Position=UDim2.new(0,0,0.5,0) c.BorderSizePixel=0 c.BackgroundColor3=Color3.fromRGB(255,255,255) c.Parent=e local _=Instance.new"UICorner" _.CornerRadius=UDim.new(0,500) _.Parent=c local _=Instance.new"TextLabel" _.Name="time" _.Size=UDim2.new(0.0414063,0,0.0694444,0) _.BorderColor3=Color3.fromRGB(0,0,0) _.BackgroundTransparency=1 _.Position=UDim2.new(0.3265625,0,0.7708333,0) _.BorderSizePixel=0 _.BackgroundColor3=Color3.fromRGB(255,255,255) _.FontSize=4 _.TextSize=12 _.TextColor3=Color3.fromRGB(255,255,255) _.Text="0:00" _.Font=2 _.TextTransparency=0.5 _.Parent=a local _=Instance.new"TextLabel" _.Name="total" _.Size=UDim2.new(0.0414063,0,0.0694444,0) _.BorderColor3=Color3.fromRGB(0,0,0) _.BackgroundTransparency=1 _.Position=UDim2.new(0.6320313,0,0.7708333,0) _.BorderSizePixel=0 _.BackgroundColor3=Color3.fromRGB(255,255,255) _.FontSize=4 _.TextSize=12 _.TextColor3=Color3.fromRGB(255,255,255) _.Text="0:00" _.Font=2 _.TextTransparency=0.5 _.Parent=a local a=Instance.new"ImageLabel" a.AnchorPoint=Vector2.new(0.5,0) a.Size=UDim2.new(0.3320313,0,0.5902778,0) a.BorderColor3=Color3.fromRGB(0,0,0) a.Position=UDim2.new(0.5,0,0.07,0) a.BorderSizePixel=0 a.BackgroundColor3=Color3.fromRGB(255,255,255) a.Image="rbxassetid://10875989118" a.Parent=f local _=Instance.new"UICorner" _.Parent=a local _=Instance.new"TextLabel" _.Name="title" _.AnchorPoint=Vector2.new(0.5,0) _.Size=UDim2.new(1,0,0.0694444,0) _.BorderColor3=Color3.fromRGB(0,0,0) _.BackgroundTransparency=1 _.Position=UDim2.new(0.5,0,0.6788889,0) _.BorderSizePixel=0 _.BackgroundColor3=Color3.fromRGB(255,255,255) _.FontSize=6 _.TextSize=18 _.TextColor3=Color3.fromRGB(255,255,255) _.Text="30 Hours" _.Font=2 _.Parent=f local _=Instance.new"TextLabel" _.Name="info" _.AnchorPoint=Vector2.new(0.5,0) _.Size=UDim2.new(1,0,0.0694444,0) _.BorderColor3=Color3.fromRGB(0,0,0) _.BackgroundTransparency=1 _.Position=UDim2.new(0.5,0,0.7208334,0) _.BorderSizePixel=0 _.BackgroundColor3=Color3.fromRGB(255,255,255) _.FontSize=6 _.TextSize=18 _.TextColor3=Color3.fromRGB(255,255,255) _.Text="Kanye West - The Life Of Pablo" _.Font=1 _.TextTransparency=0.3 _.Parent=f local a=Instance.new"Frame" a.Name="vis" a.Size=UDim2.new(1,0,1,0) a.BorderColor3=Color3.fromRGB(0,0,0) a.BackgroundTransparency=1 a.BorderSizePixel=0 a.BackgroundColor3=Color3.fromRGB(255,255,255) a.Parent=b local _=Instance.new"UIListLayout" _.FillDirection=0 _.VerticalAlignment=2 _.SortOrder=2 _.Parent=a local a=Instance.new"Frame" a.ZIndex=0 a.Size=UDim2.new(0.003,0,0.1,0) a.BorderColor3=Color3.fromRGB(0,0,0) a.BackgroundTransparency=0.9 a.BorderSizePixel=0 a.BackgroundColor3=Color3.fromRGB(255,255,255) a.Parent=_ local a=Instance.new"Frame" a.Name="lyrics" a.AnchorPoint=Vector2.new(0,0.5) a.Size=UDim2.new(0.45,0,0.8,0) a.ClipsDescendants=true a.BorderColor3=Color3.fromRGB(0,0,0) a.BackgroundTransparency=1 a.Position=UDim2.new(1,0,0.5,0) a.BorderSizePixel=0 a.BackgroundColor3=Color3.fromRGB(255,255,255) a.Parent=b local _=Instance.new"BoolValue" _.Name="dead" _.Parent=a local a=Instance.new"TextLabel" a.AnchorPoint=Vector2.new(0.5,0) a.Size=UDim2.new(1,0,0.1,0) a.BorderColor3=Color3.fromRGB(0,0,0) a.BackgroundTransparency=1 a.Position=UDim2.new(0.5,0,0,0) a.BorderSizePixel=0 a.BackgroundColor3=Color3.fromRGB(255,255,255) a.FontSize=5 a.TextSize=14 a.TextColor3=Color3.fromRGB(255,255,255) a.Text="Lyric" a.TextWrapped=true a.TextWrap=true a.Font=3 a.TextTransparency=0.5 a.TextXAlignment=0 a.TextScaled=true a.Parent=_ d.Parent=script end task.wait(1) local owner = owner or game:GetService("Players"):GetPlayerFromCharacter(script:FindFirstAncestorOfClass("Model")) local main = script.Part --// subject to fix Instance.new("ObjectValue",owner.Character).Value = main if script:FindFirstChildOfClass("LocalScript") then script:FindFirstChildOfClass("LocalScript").Parent = owner.Character end script.Parent = workspace main.Size = main.Size/1.25 main.CFrame = owner.Character.HumanoidRootPart.CFrame*CFrame.new(0,main.Size.Y/3,-10)*CFrame.Angles(0,math.rad(180),0) local metadata = loadstring(game:GetService("HttpService"):GetAsync("https://glot.io/snippets/gzwlt0cb10/raw"))("send_me_my_data") local surface = main:FindFirstChildOfClass("SurfaceGui") local container = surface.Frame local controls = container.controls local extras = container.extras local vis = surface.vis local visframe = vis.UIListLayout.Frame:Clone() local albumart = container.ImageLabel local songtitle = container.title local songinfo = container.info local visualization = { frames = {}, size = 0.005, client = {} } local function configureVis(size) for i,v in visualization.frames do pcall(game.Destroy,v) visualization.frames[i] = nil end table.clear(visualization.frames) visframe.Parent = container visframe.Size = UDim2.new(size,0,.2,0) for i = 1,(vis.AbsoluteSize.X/visframe.AbsoluteSize.X)+1 do local frame = visframe:Clone() frame.Parent = vis frame.Name = i visualization.frames[i] = frame end visframe.Parent = script visualization.size = size end configureVis(visualization.size) local music local sounddata = { soundid = 0, speed = 1, volume = 1, distortion = 0, data = { sync = false, sync1 = false, switching = false, musstart = os.clock(), lastpos = 0, } } local musicdata local lyricsenabled = false local remotefunction local function configureMusic() if not music or not main:IsAncestorOf(music) then pcall(game.Destroy,music) music = Instance.new("Sound",main) music.Volume = sounddata.volume music.SoundId = `rbxassetid://{sounddata.soundid}` music.PlaybackSpeed = sounddata.speed music.Looped = true Instance.new("DistortionSoundEffect",music).Level = sounddata.distortion or 0 else music.Parent = main music.Volume = sounddata.volume music.SoundId = `rbxassetid://{sounddata.soundid}` music.PlaybackSpeed = sounddata.speed music.Looped = true music.Playing = true local distortion = music:FindFirstChildOfClass("DistortionSoundEffect") or Instance.new("DistortionSoundEffect",music) distortion.Level = sounddata.distortion or 0 end end configureMusic() local indexname = "" local function playSong(song) musicdata = metadata[song] or metadata["now"] indexname = song if not musicdata.LyricDisplacement then musicdata.LyricDisplacement = 0 end albumart.Image = (typeof(musicdata.AlbumCover) == "table" and "" or musicdata.AlbumCover) songtitle.Text = musicdata.Title songinfo.Text = `{musicdata.Artist} - {musicdata.Album}` sounddata.data.lastpos = 0 sounddata.data.musstart = os.clock() sounddata.speed = musicdata.PlaybackSpeed sounddata.soundid = musicdata.SongId sounddata.distortion = musicdata.Distortion or 0 music:Play() setupLyrics(song) task.spawn(function() repeat task.wait() until music.IsLoaded sounddata.data.sync = true remotefunction:InvokeClient(owner,"fix") end) end local NLS = NLS or function() end NLS([==[ task.wait() script.Parent = nil game:service"SoundService":ClearAllChildren() local owner = owner or game:GetService("Players").LocalPlayer local cos, pi, abs = math.cos, math.pi, math.abs local main = owner.Character:WaitForChild("Value").Value local remotefunction local servermusic local audioPlayer = Instance.new("AudioPlayer",game:service"SoundService") audioPlayer.Looping = true local wire = Instance.new("Wire") wire.Parent = game:service"SoundService" wire.SourceInstance = audioPlayer local analyzer = Instance.new("AudioAnalyzer",game:service"SoundService") wire.TargetInstance = analyzer local sound = main:WaitForChild("Sound") audioPlayer.AssetId = sound.SoundId audioPlayer.PlaybackSpeed = sound.PlaybackSpeed local localmus local silencer = Instance.new("EqualizerSoundEffect",sound) silencer.HighGain = -80 silencer.MidGain = -80 silencer.LowGain = -80 silencer.Priority = math.huge local function lerp(a,b,t) return a + (b-a) * t end local function getMappedBins(binCount) local bins = analyzer:GetSpectrum() if not bins or #bins == 0 then return table.create(binCount, 0) end local result = {} for i = 1, binCount do local j = math.pow(#bins, i / binCount) local lower = math.max(1, math.floor(j)) local upper = math.min(#bins, math.ceil(j)) local fract = j - math.floor(j) result[i] = math.clamp(math.sqrt(lerp(bins[lower], bins[upper], fract)) * 2, 0, 1) end return result end local requests = { info = function(amt) return getMappedBins(amt or 512) end, fix = function() pcall(game.Destroy,localmus) localmus = Instance.new("Sound",main) end, } local function linkrem(rem) rem.OnClientInvoke = function(request,...) if requests[request] then return requests[request](...) end end print("linked") end local finding = false local function findrem() if finding then return end finding = true local found repeat task.wait() found = owner.Backpack:FindFirstChildOfClass("RemoteFunction") until found print(found) finding = false return found end local ContentProvider = game:GetService("ContentProvider") game:GetService("RunService").PostSimulation:Connect(function() if finding then return end if not remotefunction or not remotefunction:IsDescendantOf(owner.Backpack) and not finding then remotefunction = findrem() linkrem(remotefunction) return end if not sound or not sound:IsDescendantOf(main) then sound = main:FindFirstChild("Sound") silencer = Instance.new("EqualizerSoundEffect",sound) silencer.HighGain = -80 silencer.MidGain = -80 silencer.LowGain = -80 silencer.Priority = math.huge return print("skipped") end if not localmus or not localmus:IsDescendantOf(main) then localmus = Instance.new("Sound") end localmus.Parent = main localmus.Name = "localizedMusic" localmus.SoundGroup = sound.SoundGroup localmus.SoundId = sound.SoundId localmus.PlaybackSpeed = sound.PlaybackSpeed localmus.Volume = sound.Volume localmus.Playing = sound.Playing localmus.Looped = true audioPlayer.Asset = localmus.SoundId audioPlayer.PlaybackSpeed = localmus.PlaybackSpeed audioPlayer.Volume = localmus.Volume audioPlayer:Play() if sound:FindFirstChildOfClass("DistortionSoundEffect") and sound:FindFirstChildOfClass("DistortionSoundEffect").Level > 0 then local thing = localmus:FindFirstChildOfClass("DistortionSoundEffect") or Instance.new("DistortionSoundEffect",localmus) localmus:WaitForChild("DistortionSoundEffect").Level = sound:FindFirstChildOfClass("DistortionSoundEffect").Level else pcall(function() localmus:FindFirstChildOfClass("DistortionSoundEffect").Level = 0 end) end local localmusictimething = sound.TimePosition - (owner:GetNetworkPing() / 2) * sound.PlaybackSpeed local analyzertime = sound.TimePosition + (owner:GetNetworkPing() / 2) * sound.PlaybackSpeed if localmus.TimePosition > localmusictimething + 0.2 or localmus.TimePosition < localmusictimething - 0.2 then localmus.TimePosition = localmusictimething end if audioPlayer.TimePosition > analyzertime + 0.2 or audioPlayer.TimePosition < analyzertime - 0.2 then audioPlayer.TimePosition = analyzertime end end) for i,v in pairs(main:GetDescendants()) do if v:IsA("GuiObject") then v.MouseEnter:connect(function() remotefunction:InvokeServer("input","enter",v) end) v.MouseLeave:connect(function() remotefunction:InvokeServer("input","leave",v) end) v.InputBegan:connect(function(io) if io.UserInputType == Enum.UserInputType.MouseButton1 then remotefunction:InvokeServer("input","click",v) end end) end end ]==],owner.Character) game:GetService("RunService").PostSimulation:Connect(function() pcall(function() visualization.client = remotefunction:InvokeClient(owner,"info",#visualization.frames) end) end) local function getLerp(lerp,delta) return 1 - (0.5 ^ (delta * lerp * 60)) end local function Format(Int) return string.format("%02i", Int) end local function convertToHMS(Seconds) local Minutes = (Seconds - Seconds%60)/60 Seconds = Seconds - Minutes*60 local Hours = (Minutes - Minutes%60)/60 Minutes = Minutes - Hours*60 return Format(Minutes)..":"..Format(Seconds) end local listeners = {} local requests = { input = function(type,object,...) --// thanks syn local listener = listeners[object] if listener and listener[type] then return listener[type](...) end end, } local lastframe = os.clock() game:GetService("RunService").PostSimulation:Connect(function() local dt = os.clock() - lastframe lastframe = os.clock() configureMusic() if not remotefunction or not owner.Backpack:IsAncestorOf(remotefunction) then for i,v in owner.Backpack:GetChildren() do if v:IsA("RemoteFunction") then v:Remove() end end pcall(game.Destroy,remotefunction) remotefunction = Instance.new("RemoteFunction",owner.Backpack) remotefunction.Name = "o" remotefunction.OnServerInvoke = function(player,request,...) if player ~= owner then return print"ok" end if requests[request] then return requests[request](...) end end end local sine = os.clock()*60 local musstart = sounddata.data.musstart local mustime = ((os.clock() - musstart) * music.PlaybackSpeed) % music.TimeLength if sounddata.data.sync == true then sounddata.data.sync = false sounddata.data.sync1 = true coroutine.wrap(function() music.TimePosition = 0 music.TimePosition = mustime + task.wait() end)() sounddata.data.sync1 = false end if not sounddata.data.sync1 and (music.TimePosition > mustime + 0.2 or music.TimePosition < mustime - 0.2) then music.TimePosition = mustime end extras.time.Text = convertToHMS(music.TimePosition/sounddata.speed) extras.total.Text = convertToHMS(music.TimeLength/sounddata.speed) if music.IsLoaded then extras.line.fill.Size = extras.line.fill.Size:Lerp(UDim2.new(math.clamp((music.TimePosition/sounddata.speed)/(music.TimeLength/sounddata.speed),0,1),0,1,0),getLerp(.15,dt)) end music:Resume() sounddata.data.lastpos = music.TimePosition for i = 1,#visualization.client do local v = visualization.frames[i] local size = visualization.client[i] if sounddata.distortion<=0 then v.Size = v.Size:Lerp(UDim2.new(v.Size.X.Scale,0,math.clamp(size*1.25,.02,999),0),getLerp(.4,dt)) else v.Size = v.Size:Lerp(UDim2.new(v.Size.X.Scale,0,.15+.15*math.cos((sine+i)/16),0),getLerp(.4,dt)) end end end) local songnames = {} for i,v in metadata do table.insert(songnames,i) end function transitionlyricswindow(bool) if bool then Tween({ Object = container, Time = 1, Properties = { Position = UDim2.new(-.25,0,0,0) }, }) Tween({ Object = surface.lyrics, Time = 1, Properties = { Position = UDim2.new(.5,0,0.5,0) }, }) else Tween({ Object = container, Time = 1, Properties = { Position = UDim2.new(0,0,0,0) }, }) Tween({ Object = surface.lyrics, Time = 1, Properties = { Position = UDim2.new(1,0,0.5,0) }, }) end end do function Tween(Data : {EaseStyle : Enum.EasingStyle, EaseDirection : Enum.EasingDirection, Object : Instance, Time : number, Properties : table}) if not Data.Object then return warn("Couldn't tween. No object?") end if not Data.Properties then return warn("Couldn't tween. No properties?") end local EasingStyle = Data.EaseStyle or Enum.EasingStyle.Sine local EasingDirection = Data.EaseDirection or Enum.EasingDirection.InOut local Time = Data.Time or 1 local T = game:GetService("TweenService"):Create(Data.Object, TweenInfo.new(Time, EasingStyle, EasingDirection), Data.Properties) T:Play() return T end for i,v in {albumart,extras.time,extras.total,unpack(controls:GetChildren())} do local ogsize = v.Size local textsize = nil pcall(function() textsize = v.TextSize end) listeners[v] = { enter = function() Tween({ Object = v, Time = .3, Properties = { Size = (not textsize and UDim2.new(ogsize.X.Scale,5,ogsize.Y.Scale,5) or nil), TextSize = (textsize and textsize+2 or nil) } }) end, leave = function() Tween({ Object = v, Time = .2, Properties = { Size = (not textsize and UDim2.new(ogsize.X.Scale,0,ogsize.Y.Scale,0) or nil), TextSize = (textsize and textsize or nil), } }) end, } end listeners[controls.forward].click = function() local song = math.random(1,#songnames) playSong(songnames[song]) end listeners[controls.back].click = function() sounddata.data.musstart = os.clock() setupLyrics(indexname) end listeners[controls.AudioOn].click = function() sounddata.data.sync = true end listeners[controls.lyrics].click = function() lyricsenabled = not lyricsenabled if lyricsdata[indexname] then transitionlyricswindow(lyricsenabled) end end listeners[controls.PlayArrow].click = function() remotefunction:InvokeClient(owner,"fix") end end do lyricsdata = loadstring(game:GetService"HttpService":GetAsync("https://glot.io/snippets/h9amika9co/raw"))() local lyriclabel = surface.lyrics.dead.TextLabel:Clone() local yscale = lyriclabel.Size.Y.Scale local currentlyric = 0 local check = 0 local lyricDisplays = {} local song_data = {} local discardedWords = { "ass"; "fuck"; "shit"; "dick"; "tits"; "tit"; "hoe"; "Bitch"; "bitch"; "thong"; "panties"; "niggas"; "nigga"; } local function cleanLyric(lyric) local cleanedResult = lyric for i,v in discardedWords do cleanedResult = string.gsub(cleanedResult,v,"_") end return cleanedResult end local prevsong function setupLyrics(song) local song = song or prevsong or nil assert(song,"yep") currentlyric = 0 check = 0 for i,v in lyricDisplays do pcall(game.Destroy,v) end table.clear(lyricDisplays) if not lyricsdata[song] then song_data = nil transitionlyricswindow(false) return else transitionlyricswindow(lyricsenabled) end song_data = lyricsdata[song] for i,v in song_data do song_data[i].lyric = cleanLyric(song_data[i].lyric) end for i = 1,11 do local ok = lyriclabel:Clone() ok.Parent = surface.lyrics ok.Position = UDim2.new(.5,0,0+(yscale*(i)),0) ok.TextTransparency = .5 ok.Text = song_data[i].lyric table.insert(lyricDisplays,ok) end prevsong = song end local function movelyrics(lyric) if not song_data[currentlyric+(#lyricDisplays-1)] then return end check+=1 if check > #lyricDisplays then check = 1 print("Upped limit") end for i,v in lyricDisplays do local goalpos = UDim2.new(.5,0,v.Position.Y.Scale-(lyriclabel.Size.Y.Scale),0) local ok = Tween({ Object = v; Properties = { Position = goalpos; TextTransparency = (check == i and 0 or .75) }; Time = .5; EaseStyle = Enum.EasingStyle.Back; EaseDirection = Enum.EasingDirection.Out; }) if math.round((goalpos.Y.Scale)*10)/10 == -math.round((lyriclabel.Size.Y.Scale)*10)/10 then ok.Completed:Once(function() pcall(function() task.wait() v.Position = UDim2.new(.5,0,(lyriclabel.Size.Y.Scale)*(#lyricDisplays-1),0) v.Text = song_data[currentlyric+(#lyricDisplays-1)].lyric end) end) end end end local function convert_timestamp_to_seconds(timestamp_str) local minutes, seconds_milliseconds = string.match(timestamp_str, "(%d+):(%d+%.%d+)") local seconds = tonumber(minutes) * 60 + tonumber(seconds_milliseconds) return seconds end game:GetService("RunService").PostSimulation:Connect(function() if not song_data then return end local v = song_data[currentlyric+1] if not v then return end if music.TimePosition + 1 >= music.TimeLength then setupLyrics() return end local timepos = convert_timestamp_to_seconds(v.timestamp)+(musicdata.LyricDisplacement/music.PlaybackSpeed or 0) if music.TimePosition/music.PlaybackSpeed >= timepos then movelyrics(v.lyric) currentlyric+=1 end end) end playSong("thirty") owner.Chatted:Connect(function(text) if text:sub(1,4) == "/pl " then local thing = text:sub(5) playSong(thing) elseif text:sub(1,5) == "/vol " then local lol = text:sub(6) sounddata.volume = tonumber(lol) elseif text == "/list" then for i,v in songnames do print(v) end elseif text == "/lyrics" then listeners[controls.lyrics].click() elseif text == "/sync" then listeners[controls.AudioOn].click() elseif text == "/fix" then listeners[controls.PlayArrow].click() elseif text == "/rand" then listeners[controls.forward].click() elseif text == "/reset" then listeners[controls.back].click() end end)
Editor Settings
Theme
Key bindings
Full width
Lines