local Players=game:GetService("Players")local UIS=game:GetService("UserInputService")local RunService=game:GetService("RunService")local TweenService=game:GetService("TweenService")local player=Players.LocalPlayer local pGui=player:WaitForChild("PlayerGui")local old=pGui:FindFirstChild("OBI MUSIC")if old then old:Destroy()end local saveKey="OBI_MUSIC_POSITION"local savedPos=getgenv and getgenv()[saveKey]or nil local isMinimized=false local gui=Instance.new("ScreenGui")gui.Name="OBI MUSIC"gui.ResetOnSpawn=false gui.Parent=pGui local obiBtn=Instance.new("ImageButton")obiBtn.Size=UDim2.new(0,55,0,55)obiBtn.Position=UDim2.new(0,5,0,5)obiBtn.BackgroundColor3=Color3.fromRGB(0,0,0)obiBtn.Image="rbxassetid://"obiBtn.ZIndex=10 obiBtn.Parent=gui local obiCorner=Instance.new("UICorner")obiCorner.Parent=obiBtn obiCorner.CornerRadius=UDim.new(1,0)local obiStroke=Instance.new("UIStroke")obiStroke.Parent=obiBtn obiStroke.Color=Color3.fromRGB(255,255,255)obiStroke.Thickness=2 local obiText=Instance.new("TextLabel")obiText.Size=UDim2.new(1,0,1,0)obiText.BackgroundTransparency=1 obiText.Text="OBI"obiText.Font=Enum.Font.GothamBold obiText.TextSize=18 obiText.TextColor3=Color3.fromRGB(0,0,0)obiText.Parent=obiBtn local main=Instance.new("Frame")main.Size=UDim2.new(0,450,0,650)if savedPos then main.Position=UDim2.new(0,savedPos.X,0,savedPos.Y)else main.Position=UDim2.new(0.5,-225,0.05,0)end main.BackgroundColor3=Color3.fromRGB(15,15,15)main.BackgroundTransparency=0.05 main.Visible=true main.Parent=gui Instance.new("UICorner",main)local stroke=Instance.new("UIStroke")stroke.Parent=main stroke.Color=Color3.fromRGB(255,0,0)stroke.Thickness=2 stroke.Transparency=0.5 local function toggleMinimize()isMinimized=not isMinimized if isMinimized then main.Visible=false obiBtn.Visible=true obiBtn.Position=UDim2.new(0,5,0,5)obiBtn.Size=UDim2.new(0,55,0,55)else main.Visible=true obiBtn.Visible=true obiBtn.Position=UDim2.new(0,5,0,5)obiBtn.Size=UDim2.new(0,55,0,55)end end local closeBtn=Instance.new("TextButton")closeBtn.Size=UDim2.new(0,30,0,30)closeBtn.Position=UDim2.new(1,-40,0,5)closeBtn.Text="โœ•"closeBtn.TextColor3=Color3.fromRGB(255,50,50)closeBtn.TextSize=20 closeBtn.BackgroundTransparency=1 closeBtn.Parent=main closeBtn.MouseButton1Click:Connect(function()gui:Destroy()end)local dragging=false local dragStart,startPos main.InputBegan:Connect(function(input)if input.UserInputType==Enum.UserInputType.MouseButton1 then local mousePos=input.Position local closePos=closeBtn.AbsolutePosition local onClose=mousePos.X>=closePos.X and mousePos.X<=closePos.X+closeBtn.AbsoluteSize.X and mousePos.Y>=closePos.Y and mousePos.Y<=closePos.Y+closeBtn.AbsoluteSize.Y if not onClose then dragging=true dragStart=input.Position startPos=main.Position end end end)UIS.InputEnded:Connect(function(input)if input.UserInputType==Enum.UserInputType.MouseButton1 then if dragging then dragging=false local pos=main.Position if getgenv then getgenv()[saveKey]={X=pos.X.Offset,Y=pos.Y.Offset}end end end end)UIS.InputChanged:Connect(function(input)if dragging and input.UserInputType==Enum.UserInputType.MouseMovement then local delta=input.Position-dragStart main.Position=UDim2.new(startPos.X.Scale,startPos.X.Offset+delta.X,startPos.Y.Scale,startPos.Y.Offset+delta.Y)end end)local sound=Instance.new("Sound")sound.Parent=player sound.Volume=0.5 sound.Looped=false local repeatMode=0 local repeatModes={"๐Ÿ” OFF","๐Ÿ”‚ ONE","๐Ÿ” ALL","๐Ÿ”€ SHUFFLE"}local currentSongIndex=1 local isPlaying=false local favourites={}local isFavouriteView=false local songs={{section="๐Ÿ‡ฎ๐Ÿ‡ณ HINDI --->"},{"Sasso ki mala",6060209588},{"Jhol",121180010622504},{"Aadat",94103203628909},{"Ae Dil Hai Mushkil",5713940698},{"Apna Bana Le",84196151497433},{"Channa Mereya",6826711479},{"Dhun",129981117529204},{"Gerua",4862783008},{"Hai dil ye mera",113792808283128},{"Kal Ho Naa Ho",1868325735},{"Kesariya",103242175769141},{"Kuch Kuch Hota Hai",1859371451},{"Mann Mera",88345320570909},{"Pal Pal",77002121761232},{"Parde me rhne do",81161805007229},{"Raabta",4929716658},{"Ranjheya ve",77373466558471},{"Sun Raha Hai",7240052914},{"Tum Hi Ho",3080585116},{"Zaroori tha",90050076108794},{"Aashiqui",1842273490},{"Badtameez Dil",1842690885},{"Befikre",1842691863},{"Dilbar Dilbar",1842690887},{"Ghungroo",1842690888},{section="๐Ÿ‡ฌ๐Ÿ‡ง ENGLISH --->"},{"Fire",90091311847595},{"No Surprises",135870211789424},{"Senorita",91949834100907},{"Summer",1842690955},{"The Way U Kiss Me",121052103423342},{"Under Your Spell",91007045451630},{section="๐ŸŽค EMINEM --->"},{"Beautiful",1842701727},{"Godzilla",5062664100},{"Headlights",1842699257},{"Lose Yourself",3080044205},{"Love The Way You Lie",1842694972},{"Mockingbird",99518929868012},{"My Name Is",1842700485},{"Not Afraid",1842701763},{"Rap God",138081652},{"Stan",1842690417},{"The Monster",1842695658},{"The Real Slim Shady",1842703587},{"Till I Collapse",1842690883},{"Venom",3168031543},{"Without Me",1842701766},{section="๐Ÿ’ƒ LATIN --->"},{"Bailando",1349802773},{"Caliente",105492220688862},{"Dรกkiti",6011457092},{"Despacito",1676036811},{"Funk Sigcuro",96028783423401},{"Havana",1304762838},{"La La La",1377611298},{"Mi Gente",2386188386},{"Montagem Rugada",97507441505828},{"Solo Una Noche",111205815697819},{"Taki Taki",2834067479},{section="๐ŸŒ POP --->"},{"Believer",516134947},{"Blinding Lights",5134018293},{"Call Out My Name",3003443586},{"Can't Feel My Face",4698920526},{"Demons",516134949},{"Dusk Till Dawn",1140640686},{"Enemy",7079142376},{"Hello",471740447},{"I Feel It Coming",5560944363},{"Let Her Go",339236049},{"Let Me Down Slowly",2827451309},{"Radioactive",516134946},{"Rolling In The Deep",3080584322},{"Save Your Tears",6669122670},{"Someone Like You",3080584616},{"Starboy",5560944360},{"The Hills",4698920708},{"The Night We Met",4929716668},{"Thunder",516134948},}local title=Instance.new("TextLabel")title.Size=UDim2.new(1,0,0,40)title.Position=UDim2.new(0,0,0,5)title.BackgroundTransparency=1 title.Text="๐ŸŽต OBI MUSIC PLAYER"title.Font=Enum.Font.GothamBold title.TextSize=18 title.TextColor3=Color3.new(1,1,1)title.TextXAlignment=Enum.TextXAlignment.Center title.Parent=main local playBtn=Instance.new("TextButton")playBtn.Size=UDim2.new(0,65,0,35)playBtn.Position=UDim2.new(0,10,0,55)playBtn.Text="โ–ถ"playBtn.BackgroundColor3=Color3.fromRGB(30,30,30)playBtn.TextColor3=Color3.new(1,1,1)playBtn.Parent=main local stopBtn=Instance.new("TextButton")stopBtn.Size=UDim2.new(0,65,0,35)stopBtn.Position=UDim2.new(0,80,0,55)stopBtn.Text="โน"stopBtn.BackgroundColor3=Color3.fromRGB(30,30,30)stopBtn.TextColor3=Color3.new(1,1,1)stopBtn.Parent=main local repeatBtn=Instance.new("TextButton")repeatBtn.Size=UDim2.new(0,65,0,35)repeatBtn.Position=UDim2.new(0,150,0,55)repeatBtn.Text="๐Ÿ” OFF"repeatBtn.BackgroundColor3=Color3.fromRGB(30,30,30)repeatBtn.TextColor3=Color3.new(1,1,1)repeatBtn.Parent=main repeatBtn.MouseButton1Click:Connect(function()repeatMode=(repeatMode+1)%4 repeatBtn.Text=repeatModes[repeatMode+1]if repeatMode==0 then repeatBtn.TextColor3=Color3.new(1,1,1)elseif repeatMode==1 then repeatBtn.TextColor3=Color3.fromRGB(0,255,0)elseif repeatMode==2 then repeatBtn.TextColor3=Color3.fromRGB(0,200,255)elseif repeatMode==3 then repeatBtn.TextColor3=Color3.fromRGB(255,200,0)end end)local favToggleBtn=Instance.new("TextButton")favToggleBtn.Size=UDim2.new(0,65,0,35)favToggleBtn.Position=UDim2.new(0,220,0,55)favToggleBtn.Text="๐Ÿ’— ALL"favToggleBtn.BackgroundColor3=Color3.fromRGB(30,30,30)favToggleBtn.TextColor3=Color3.new(1,1,1)favToggleBtn.Parent=main favToggleBtn.MouseButton1Click:Connect(function()isFavouriteView=not isFavouriteView if isFavouriteView then favToggleBtn.Text="๐Ÿ’— FAV"favToggleBtn.TextColor3=Color3.fromRGB(255,100,150)title.Text="๐Ÿ’— FAVOURITES"else favToggleBtn.Text="๐Ÿ’— ALL"favToggleBtn.TextColor3=Color3.new(1,1,1)title.Text="๐ŸŽต OBI MUSIC PLAYER"end refreshSongList()end)local currentSongId=nil local currentSongName=""local currentHighlight=nil playBtn.MouseButton1Click:Connect(function()if currentSongId then sound:Play()isPlaying=true playBtn.Text="โธ"else playBtn.Text="โš ๏ธ"task.wait(1)playBtn.Text="โ–ถ"end end)stopBtn.MouseButton1Click:Connect(function()sound:Stop()isPlaying=false playBtn.Text="โ–ถ"end)local volumeBox=Instance.new("TextBox")volumeBox.Size=UDim2.new(0,50,0,35)volumeBox.Position=UDim2.new(0,290,0,55)volumeBox.Text="0.5"volumeBox.BackgroundColor3=Color3.fromRGB(30,30,30)volumeBox.TextColor3=Color3.new(1,1,1)volumeBox.Parent=main volumeBox.FocusLost:Connect(function()local v=tonumber(volumeBox.Text)if v then sound.Volume=math.clamp(v,0,1)volumeBox.Text=tostring(math.round(sound.Volume*100)/100)end end)local addBox=Instance.new("TextBox")addBox.Size=UDim2.new(0,200,0,30)addBox.Position=UDim2.new(0,10,0,600)addBox.PlaceholderText="๐ŸŽต Song Name, ID"addBox.BackgroundColor3=Color3.fromRGB(30,30,30)addBox.TextColor3=Color3.new(1,1,1)addBox.Parent=main local addBtn=Instance.new("TextButton")addBtn.Size=UDim2.new(0,60,0,30)addBtn.Position=UDim2.new(0,220,0,600)addBtn.Text="ADD"addBtn.BackgroundColor3=Color3.fromRGB(255,0,0)addBtn.TextColor3=Color3.new(1,1,1)addBtn.Parent=main addBtn.MouseButton1Click:Connect(function()local input=addBox.Text local parts={}for word in input:gmatch("[^,]+")do table.insert(parts,word:gsub("^%s*(.-)%s*$","%1"))end if #parts>=2 then local name=parts[1]local id=tonumber(parts[2])if id then table.insert(songs,{name,id})refreshSongList()addBox.Text=""addBtn.Text="โœ…"task.wait(0.8)addBtn.Text="ADD"end end end)local scroll=Instance.new("ScrollingFrame")scroll.Size=UDim2.new(1,-15,0,440)scroll.Position=UDim2.new(0,8,0,100)scroll.BackgroundTransparency=1 scroll.ScrollBarThickness=10 scroll.ScrollBarImageColor3=Color3.fromRGB(255,0,0)scroll.ScrollBarImageTransparency=0.3 scroll.VerticalScrollBarPosition=Enum.VerticalScrollBarPosition.Right scroll.ElasticBehavior=Enum.ElasticBehavior.Never scroll.Parent=main local scrollSpeed=35 scroll.InputBegan:Connect(function(input)if input.UserInputType==Enum.UserInputType.MouseWheel then local delta=input.Position.Z*scrollSpeed local newY=scroll.CanvasPosition.Y-delta local maxY=math.max(0,scroll.CanvasSize.Y.Offset-scroll.Size.Y.Offset)newY=math.clamp(newY,0,maxY)local tweenInfo=TweenInfo.new(0.1,Enum.EasingStyle.Linear)local tween=TweenService:Create(scroll,tweenInfo,{CanvasPosition=Vector2.new(0,newY)})tween:Play()end end)local isDraggingScroll=false local lastMouseY=0 local startScrollY=0 scroll.InputBegan:Connect(function(input)if input.UserInputType==Enum.UserInputType.MouseButton1 then isDraggingScroll=true lastMouseY=input.Position.Y startScrollY=scroll.CanvasPosition.Y end end)UIS.InputEnded:Connect(function(input)if input.UserInputType==Enum.UserInputType.MouseButton1 then isDraggingScroll=false end end)UIS.InputChanged:Connect(function(input)if isDraggingScroll and input.UserInputType==Enum.UserInputType.MouseMovement then local deltaY=lastMouseY-input.Position.Y local newY=startScrollY+deltaY local maxY=math.max(0,scroll.CanvasSize.Y.Offset-scroll.Size.Y.Offset)newY=math.clamp(newY,0,maxY)scroll.CanvasPosition=Vector2.new(0,newY)end end)function scrollToSong(index)local totalHeight=scroll.CanvasSize.Y.Offset local visibleHeight=scroll.Size.Y.Offset if totalHeight<=visibleHeight then scroll.CanvasPosition=Vector2.new(0,0)return end local targetY=(index-1)*44 targetY=math.clamp(targetY,0,totalHeight-visibleHeight)local tweenInfo=TweenInfo.new(0.3,Enum.EasingStyle.Quad,Enum.EasingDirection.Out)local tween=TweenService:Create(scroll,tweenInfo,{CanvasPosition=Vector2.new(0,targetY)})tween:Play()end local layout=Instance.new("UIListLayout")layout.Parent=scroll layout.SortOrder=Enum.SortOrder.LayoutOrder layout.Padding=UDim.new(0,4)layout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()scroll.CanvasSize=UDim2.new(0,0,0,layout.AbsoluteContentSize.Y+10)end)function playNextSong()if repeatMode==1 then if currentSongId then sound.SoundId="rbxassetid://"..currentSongId sound:Play()isPlaying=true playBtn.Text="โธ"end return end if repeatMode==3 then local randomIndex=math.random(1,#songs)local tempSong=songs[randomIndex]while(tempSong.section or randomIndex==currentSongIndex)and #songs>1 do randomIndex=math.random(1,#songs)tempSong=songs[randomIndex]end currentSongIndex=randomIndex else currentSongIndex=currentSongIndex+1 if currentSongIndex>#songs then if repeatMode==2 then currentSongIndex=1 else isPlaying=false playBtn.Text="โ–ถ"return end end end local songData=songs[currentSongIndex]while songData and songData.section do currentSongIndex=currentSongIndex+1 if currentSongIndex>#songs then if repeatMode==2 then currentSongIndex=1 else isPlaying=false playBtn.Text="โ–ถ"return end end songData=songs[currentSongIndex]end if not songData then isPlaying=false playBtn.Text="โ–ถ"return end currentSongName=songData[1]currentSongId=songData[2]sound.SoundId="rbxassetid://"..currentSongId sound:Play()isPlaying=true playBtn.Text="โธ"title.Text="๐ŸŽต "..currentSongName highlightSong(currentSongName)end function highlightSong(songName)if currentHighlight then currentHighlight.BackgroundColor3=Color3.fromRGB(35,35,35)end for _,child in pairs(scroll:GetChildren())do if child:IsA("Frame")then for _,subChild in pairs(child:GetChildren())do if subChild:IsA("TextButton")and subChild.Name=="SongBtn"and subChild.Text==songName then currentHighlight=subChild subChild.BackgroundColor3=Color3.fromRGB(255,0,0)return end end end end end sound.Ended:Connect(function()if isPlaying and currentSongId then sound.SoundId="rbxassetid://"..currentSongId sound:Play()isPlaying=true playBtn.Text="โธ"end end)function toggleFavourite(songName)local index=table.find(favourites,songName)if index then table.remove(favourites,index)return false else table.insert(favourites,songName)return true end end function isFavourite(songName)return table.find(favourites,songName)~=nil end function refreshSongList()for _,child in pairs(scroll:GetChildren())do if child:IsA("Frame")or child:IsA("TextLabel")then child:Destroy()end end local displaySongs={}if isFavouriteView then for _,song in ipairs(songs)do if song[1]and isFavourite(song[1])then table.insert(displaySongs,song)end end else displaySongs=songs end local yOffset=0 local songCount=0 for i,songData in ipairs(displaySongs)do if songData.section then if not isFavouriteView then local header=Instance.new("TextLabel")header.Size=UDim2.new(1,-5,0,30)header.Position=UDim2.new(0,0,0,yOffset)header.BackgroundColor3=Color3.fromRGB(40,40,40)header.Text=songData.section header.TextColor3=Color3.fromRGB(255,200,100)header.TextSize=14 header.Font=Enum.Font.GothamBold header.TextXAlignment=Enum.TextXAlignment.Right header.Parent=scroll yOffset=yOffset+34 end else songCount=songCount+1 local row=Instance.new("Frame")row.Size=UDim2.new(1,-5,0,40)row.Position=UDim2.new(0,0,0,yOffset)row.BackgroundTransparency=1 row.Parent=scroll local favBtn=Instance.new("TextButton")favBtn.Size=UDim2.new(0,30,0,30)favBtn.Position=UDim2.new(0,0,0,5)favBtn.Text=isFavourite(songData[1])and"๐Ÿ’—"or"๐Ÿค"favBtn.BackgroundTransparency=1 favBtn.TextSize=18 favBtn.TextColor3=isFavourite(songData[1])and Color3.fromRGB(255,100,150)or Color3.fromRGB(100,100,100)favBtn.Parent=row favBtn.MouseButton1Click:Connect(function()local newFav=toggleFavourite(songData[1])if newFav then favBtn.Text="๐Ÿ’—"favBtn.TextColor3=Color3.fromRGB(255,100,150)else favBtn.Text="๐Ÿค"favBtn.TextColor3=Color3.fromRGB(100,100,100)end if isFavouriteView and not newFav then refreshSongList()end end)local btn=Instance.new("TextButton")btn.Name="SongBtn"btn.Size=UDim2.new(1,-35,0,35)btn.Position=UDim2.new(0,33,0,2.5)btn.Text=songData[1]btn.BackgroundColor3=Color3.fromRGB(35,35,35)btn.TextColor3=Color3.new(1,1,1)btn.TextXAlignment=Enum.TextXAlignment.Left btn.TextSize=14 btn.Font=Enum.Font.Gotham btn.Parent=row btn.MouseEnter:Connect(function()if btn~=currentHighlight then btn.BackgroundColor3=Color3.fromRGB(50,50,50)end end)btn.MouseLeave:Connect(function()if btn~=currentHighlight then btn.BackgroundColor3=Color3.fromRGB(35,35,35)end end)btn.MouseButton1Click:Connect(function()if currentHighlight then currentHighlight.BackgroundColor3=Color3.fromRGB(35,35,35)end currentHighlight=btn btn.BackgroundColor3=Color3.fromRGB(255,0,0)for idx,s in ipairs(songs)do if s[1]==songData[1]then currentSongIndex=idx break end end currentSongName=songData[1]currentSongId=songData[2]if sound.SoundId=="rbxassetid://"..currentSongId and sound.Playing then sound:Stop()task.wait(0.1)end sound.SoundId="rbxassetid://"..currentSongId sound:Play()isPlaying=true playBtn.Text="โธ"title.Text="๐ŸŽต "..currentSongName if isFavouriteView then scrollToSong(i)else scrollToSong(songCount)end end)yOffset=yOffset+44 end end scroll.CanvasSize=UDim2.new(0,0,0,yOffset+10)end refreshSongList()local lastClickTime=0 local rgb=false obiBtn.MouseButton1Click:Connect(function()local currentTime=tick()if currentTime-lastClickTime<0.3 then rgb=not rgb lastClickTime=0 else lastClickTime=currentTime toggleMinimize()end end)RunService.RenderStepped:Connect(function()local hue=(tick()*0.5)%1 obiBtn.BackgroundColor3=Color3.fromHSV(hue,1,1)if rgb then local hue2=(tick()%5)/5 stroke.Color=Color3.fromHSV(hue2,1,1)stroke.Transparency=0.3+math.sin(tick()*2)*0.2 obiStroke.Color=Color3.fromRGB(255,255,255)obiText.TextColor3=Color3.fromRGB(255,0,0)else stroke.Color=Color3.fromRGB(255,0,0)stroke.Transparency=0.5 obiStroke.Color=Color3.fromRGB(255,255,255)obiText.TextColor3=Color3.fromRGB(0,0,0)end end)