music system overhaul

Run Settings
LanguageLua
Language Version
Run Command
local random = Random.new() local soundTable = { ["Bass"] = {}; ["Ping"] = {}; ["Snap"] = {} } local letterTable = { ["C"] = 2 ^ (1 / 12); ["C#"] = 2 ^ (2 / 12); ["D"] = 2 ^ (3 / 12); ["D#"] = 2 ^ (4 / 12); ["E"] = 2 ^ (5 / 12); ["F"] = 2 ^ (6 / 12); ["F#"] = 2 ^ (7 / 12); ["G"] = 2 ^ (8 / 12); ["G#"] = 2 ^ (9 / 12); ["A"] = 2 ^ (10 / 12); ["A#"] = 2 ^ (11 / 12); ["B"] = 2 ^ (12 / 12) } local octaveTable = { [1] = 0.125; [2] = 0.25; [3] = 0.5; [4] = 1; [5] = 2; [6] = 4; [7] = 8 } local function returnPitch(table) local letter = table[1] local octave = table[2] return letterTable[letter] * octaveTable[octave] end local currentBass = 1 local currentPing = 1 local currentSnap = 1 for i = 1, 3 do for s = 1, 6 do local sEffect = Instance.new("Sound") sEffect.Volume = 1.4 sEffect.Parent = owner.Character.HumanoidRootPart if i == 1 then sEffect.SoundId = "rbxasset://sounds/bass.mp3" table.insert(soundTable["Bass"], {sEffect, "C"}) elseif i == 2 then sEffect.SoundId = "rbxasset://sounds/electronicpingshort.wav" table.insert(soundTable["Ping"], {sEffect, "A#"}) elseif i == 3 then sEffect.SoundId = "rbxasset://sounds/snap.mp3" table.insert(soundTable["Snap"], {sEffect, "C"}) end end end local function playSound(s, p, v) if s == "bass" then currentBass += 1 if currentBass > #soundTable["Bass"] then currentBass = 1 end local sound = soundTable["Bass"][currentBass][1] sound.TimePosition = 0.12 sound.Pitch = returnPitch(p) * letterTable[soundTable["Bass"][currentBass][2]] sound.Volume = v sound.Playing = true return sound elseif s == "ping" then currentPing += 1 if currentPing > #soundTable["Ping"] then currentPing = 1 end local sound = soundTable["Ping"][currentPing][1] sound.TimePosition = 0.2 sound.Pitch = returnPitch(p) * letterTable[soundTable["Ping"][currentPing][2]] sound.Volume = v sound.Playing = true return sound elseif s == "snap" then currentSnap += 1 if currentSnap > #soundTable["Snap"] then currentSnap = 1 end local sound = soundTable["Snap"][currentSnap][1] sound.TimePosition = 0.2 sound.Pitch = returnPitch(p) * letterTable[soundTable["Snap"][currentSnap][2]] sound.Volume = v sound.Playing = true return sound end end local sounds = { ["NightSong"] = { ["Tempo"] = 135; ["Channels"] = { [1] = "bass"; [2] = "ping" }; ["Patterns"] = { [1] = { [1] = { [1] = {"F#", 4, 0.2, 2, true}; [2] = {"F#", 4, 0.4, 2, true}; [3] = {"F#", 4, 0.6, 2, true}; [4] = {"F#", 4, 0.8, 2, true}; [5] = {"F#", 4, 1, 2, true}; [6] = {"F#", 4, 1.2, 2, true}; [7] = {"F#", 4, 1.4, 2, true}; [8] = {"F#", 4, 1.6, 2, true}; [9] = {"F#", 4, 1.6, 2, true}; [10] = {"F#", 4, 1.4, 2, true}; [11] = {"F#", 4, 1.2, 2, true}; [12] = {"F#", 4, 1, 2, true}; [13] = {"F#", 4, 0.8, 2, true}; [14] = {"F#", 4, 0.6, 2, true}; [15] = {"F#", 4, 0.4, 2, true}; [16] = {"F#", 4, 0.2, 2, true} }; [2] = { [1] = {"A#", 2, 2, 2, true}; [2] = {"C", 3, 2, 2, true}; [3] = {"C#", 3, 2, 2, true}; [4] = {"D#", 3, 2, 2, true}; [5] = {"F", 3, 2, 2, true}; [6] = {"F#", 3, 2, 2, true}; [7] = {"G#", 3, 2, 2, true}; [8] = {"A", 3, 2, 2, true}; [9] = {"A#", 3, 2, 2, true}; [10] = {"G#", 3, 2, 2, true}; [11] = {"F#", 3, 2, 2, true}; [12] = {"F", 3, 2, 2, true}; [13] = {"D#", 3, 2, 2, true}; [14] = {"C#", 3, 2, 2, true}; [15] = {"C", 3, 2, 2, true}; [16] = {"A#", 2, 2, 2, true} } } }; ["Measures"] = { 1 } } } local function playSong(song) local tempo = 60 / song["Tempo"] local channels = song["Channels"] local patterns = song["Patterns"] local measures = song["Measures"] for i = 1, #channels do task.spawn(function() local currentMeasure = 1 local currentPattern = measures[currentMeasure] local currentNote = 0 while true do currentNote += 1 currentPattern = measures[currentMeasure] if currentNote > #patterns[currentPattern][i] then currentMeasure += 1 if currentMeasure > #measures then currentMeasure = 1 end currentNote = 1 currentPattern = measures[currentMeasure] end local note = patterns[currentPattern][i][currentNote] local sound if patterns[currentPattern][i][currentNote] ~= nil then sound = playSound(channels[i], {note[1], note[2]}, note[3]) end task.wait(tempo / note[4]) sound.Playing = false end end) end end playSong(sounds["NightSong"])
Editor Settings
Theme
Key bindings
Full width
Lines