Advertisement
Guest User

Untitled

a guest
Oct 25th, 2014
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.96 KB | None | 0 0
  1. globalAudio = globalAudio or nil
  2.  
  3. if (globalAudio) then
  4.     globalAudio:Stop()
  5. end
  6.  
  7. sound.PlayURL("http://localhost/test/file.mp3", "", function(audio, __, err)
  8.     globalAudio = audio
  9.     audio:Play()
  10.    
  11.     timer.Create("fft", 0.01, 0, function()
  12.         fftAnal(audio)
  13.     end)
  14. end)
  15.  
  16. local lastFFT = {}
  17. local maxs = {}
  18.  
  19. local kickThreshold = 0.3;
  20.  
  21. function maxAmps(freqs)
  22.     local max = 0
  23.  
  24.     for i=freqs[1], freqs[2] do
  25.         if (lastFFT[i] and max and lastFFT[i] > max) then
  26.             max = lastFFT[i]
  27.         end
  28.     end
  29.  
  30.     return max
  31. end
  32.  
  33. function fftAnal(audio)
  34.     audio:FFT(lastFFT, FFT_256)
  35.     for k, v in pairs(lastFFT) do
  36.         if (!maxs[k] or v > maxs[k]) then
  37.             maxs[k] = v
  38.         end
  39.     end
  40.  
  41.     if (maxAmps({1, 11}) >= kickThreshold) then
  42.         kickThreshold = maxAmps({1, 11})
  43.         kick(maxAmps({1, 11}))
  44.     else
  45.         kickThreshold = kickThreshold - 0.02
  46.     end
  47. end
  48.  
  49. local colors = {}
  50.  
  51. local baseColor = Color(0, 146, 185, 200)
  52.  
  53. for i=1, 128 do
  54.     colors[i] = Color(baseColor.r + math.random(0, 10), baseColor.g + math.random(-10, 10), baseColor.b + math.random(-10, 10))
  55. end
  56.  
  57. local paintValues = {}
  58. local drawColor = Color(255, 255, 255, 0)
  59.  
  60. hook.Add("HUDPaint", "test", function()
  61.     local w = ScrW() / 128
  62.  
  63.     surface.SetDrawColor(drawColor)
  64.     surface.DrawRect(0, 0, ScrW(), ScrH())
  65.  
  66.     for k, v in pairs(lastFFT) do
  67.         if (!paintValues[k]) then
  68.             paintValues[k] = (200 / maxs[k]) * v
  69.         else
  70.             if (paintValues[k] < (200 / maxs[k]) * v) then
  71.                 paintValues[k] = math.Approach(paintValues[k], (200 / maxs[k]) * v, FrameTime() * 3000)
  72.             else
  73.                 paintValues[k] = math.Approach(paintValues[k], (200 / maxs[k]) * v, -FrameTime() * 3000)
  74.             end
  75.         end
  76.  
  77.         //surface.SetDrawColor(0, 255/128 * k, 255 - (255/128 * k ))
  78.         surface.SetDrawColor(colors[k])
  79.         surface.DrawRect((k - 1) * w, 0, w, paintValues[k])
  80.     end
  81. end)
  82.  
  83.  
  84. function kick(mag)
  85.     drawColor = Color(math.random(0, 255), math.random(0, 255), math.random(0, 255), 100)
  86.     local ang = AngleRand() * mag
  87.     LocalPlayer():ViewPunch(ang)
  88. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement