Advertisement
Guest User

Untitled

a guest
Jul 24th, 2014
249
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. local cam = cam
  2. local draw = draw
  3. local ScrW = ScrW
  4. local ScrH = ScrH
  5. local Color = Color
  6. local Angle = Angle
  7. local Vector = Vector
  8. local tonumber = tonumber
  9. local ColorToHSV = ColorToHSV
  10. local HSVToColor = HSVToColor
  11.  
  12. local hide = {
  13.     CHudHealth  = true,
  14.     CHudBattery = true,
  15. }
  16.  
  17. local function HideThings( name )
  18.     if ( hide[ name ] ) then return false end
  19. end
  20. hook.Add( "HUDShouldDraw", "HideThings", HideThings )
  21.  
  22.  
  23. local BLACK = Color( 0, 0, 0 )
  24. local WHITE = Color( 255, 255, 255 )
  25. local GRAY  = Color(120,120,120,50)
  26.  
  27. --[[-------------------------------------------------------------------------------]]--
  28. visualizer = visualizer or {}
  29. --[[-------------------------------------------------------------------------------]]--
  30. visualizer.levels = visualizer.levels or {
  31.     [FFT_256]   = 128,
  32.     [FFT_512]   = 256,
  33.     [FFT_1024]  = 512,
  34.     [FFT_2048]  = 1024,
  35.     [FFT_4096]  = 2048,
  36.     [FFT_8192]  = 4096,
  37.     [FFT_16384] = 8192,
  38. }
  39. --[[-------------------------------------------------------------------------------]]--
  40. visualizer.Level  = FFT_256
  41. visualizer.LevelW = 22
  42. visualizer.LevelH = ScrH()
  43. visualizer.TotalW = visualizer.LevelW * visualizer.levels[ visualizer.Level ]
  44.  
  45. visualizer.URL     = "http://jukebox.ijwtb.net/music/Capital Cities/In A Tidal Wave Of Mystery/I Sold My Bed, But Not My Stereo.mp3"
  46. visualizer.Channel = visualizer.Channel
  47.  
  48. visualizer.Pos = Vector( -1000, 1000, -11275 )
  49. visualizer.Ang = Angle( 0, 0, 90 )
  50. visualizer.Color = Color( 255, 0, 0 )
  51. --[[-------------------------------------------------------------------------------]]--
  52. concommand.Add( "visualizer_url", function( ply, cmd, args, str )
  53.     visualizer.URL = args[1]
  54. end )
  55. --[[-------------------------------------------------------------------------------]]--
  56. concommand.Add( "visualizer_levels", function( ply, cmd, args, str )
  57.     local num = tonumber( args[1] )
  58.     if ( !num ) then return end
  59.    
  60.     local fft = _G[ "FFT_" .. num ]
  61.     if ( !fft ) then return end
  62.    
  63.     visualizer.Level = fft
  64.     visualizer.TotalW = visualizer.LevelW * visualizer.levels[ fft ]
  65. end )
  66. --[[-------------------------------------------------------------------------------]]--
  67. concommand.Add( "visualizer_pos", function( ply, cmd, args, str )
  68.     local x, y, z = tonumber( args[1] ), tonumber( args[2] ), tonumber( args[3] )
  69.     if ( !x or !y or !z ) then return end
  70.    
  71.     visualizer.Pos = Vector( x, y, z )
  72. end )
  73. --[[-------------------------------------------------------------------------------]]--
  74. concommand.Add( "visualizer_ang", function( ply, cmd, args, str )
  75.     local p, y, r = tonumber( args[1] ), tonumber( args[2] ), tonumber( args[3] )
  76.     if ( !p or !y or !r ) then return end
  77.    
  78.     visualizer.Ang = Angle( p, y, r )
  79. end )
  80. --[[-------------------------------------------------------------------------------]]--
  81. concommand.Add( "visualizer_levelw", function( ply, cmd, args, str )
  82.     local w = tonumber( args[1] )
  83.     if ( !w ) then return end
  84.    
  85.     visualizer.LevelW = w
  86.     visualizer.TotalW = visualizer.LevelW * visualizer.levels[ visualizer.Level ]
  87. end )
  88. --[[-------------------------------------------------------------------------------]]--
  89. concommand.Add( "visualizer_levelh", function( ply, cmd, args, str )
  90.     local h = tonumber( args[1] )
  91.     if ( !h ) then return end
  92.    
  93.     visualizer.LevelH = h
  94. end )
  95. --[[-------------------------------------------------------------------------------]]--
  96. function visualizer.Play()
  97.     visualizer.Stop()
  98.  
  99.     hook.Add( "PostDrawOpaqueRenderables", "Visualizer", visualizer.Draw )
  100.    
  101.     sound.PlayURL( visualizer.URL, "noblock", function( channel, errID, errName )
  102.         visualizer.Channel = channel
  103.     end )
  104. end
  105. concommand.Add( "visualizer_play", function( ply, cmd, args, str )
  106.     visualizer.Play()
  107. end )
  108. --[[-------------------------------------------------------------------------------]]--
  109. function visualizer.Stop()
  110.     if ( visualizer.Channel ) then
  111.         visualizer.Channel:Stop()
  112.         visualizer.Channel = nil
  113.     end
  114.    
  115.     hook.Remove( "PostDrawOpaqueRenderables", "Visualizer" )
  116. end
  117. concommand.Add( "visualizer_stop", function( ply, cmd, args, str )
  118.     visualizer.Stop()
  119. end )
  120. --[[-------------------------------------------------------------------------------]]--
  121. concommand.Add( "visualizer_refresh", function( ply, cmd, args, str )
  122.     hook.Add( "PostDrawOpaqueRenderables", "Visualizer", visualizer.Draw )
  123. end )
  124. --[[-------------------------------------------------------------------------------]]--
  125. function visualizer.Draw()
  126.     if( not IsValid( visualizer.Channel ) ) then return end
  127.  
  128.     local FFTable   = {}
  129.     local FFTLevels = visualizer.Channel:FFT( FFTable, visualizer.Level )
  130.    
  131.     cam.Start3D2D( visualizer.Pos, visualizer.Ang, 1 )
  132.         draw.RoundedBox( 0, 0, 0, visualizer.TotalW, visualizer.LevelH, BLACK )
  133.     cam.End3D2D()
  134.    
  135.     local fft, x, y
  136.     local levelW = visualizer.LevelW
  137.    
  138.     local h, s, v = ColorToHSV( visualizer.Color )
  139.     visualizer.Color = HSVToColor( h + 1, s, v )
  140.  
  141.     surface.SetFont( "default" )
  142.    
  143.     for i = 1, #FFTable do
  144.         fft = FFTable[ i ]
  145.         local levelH = fft * visualizer.LevelH
  146.        
  147.         x = visualizer.LevelW * ( i - 1 )
  148.         y = visualizer.LevelH - levelH
  149.  
  150.         cam.Start3D2D( visualizer.Pos, visualizer.Ang, 1 )
  151.             draw.RoundedBox( 0, x, y, levelW, levelH, HSVToColor( h + i, s, v ) )
  152.             surface.SetDrawColor( WHITE )
  153.             surface.DrawOutlinedRect( x, y, levelW, levelH+1 )
  154.            
  155.             surface.SetTextPos( x + ( visualizer.LevelW / 2 ), visualizer.LevelH )
  156.             surface.DrawText( i )
  157.         cam.End3D2D()
  158.     end
  159. end
  160. --[[-------------------------------------------------------------------------------]]--
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement