Advertisement
Guest User

Untitled

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