Advertisement
GAMELASTER

Untitled

Apr 7th, 2015
360
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.19 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Diagnostics;
  6. using System.Drawing;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Windows.Forms;
  10. using Un4seen.Bass;
  11. using Un4seen.Bass.Misc;
  12. using Un4seen.BassWasapi;
  13.  
  14. namespace audioVisualizer
  15. {
  16.     public partial class Form1 : Form
  17.     {
  18.         public Form1()
  19.         {
  20.             InitializeComponent();
  21.         }
  22.  
  23.         List<byte> _spectrumdata = new List<byte>();
  24.         int devindex;
  25.         float[] fft = new float[1024];
  26.         int _lines = 3;
  27.         WASAPIPROC wasapiProcess;
  28.         BassWasapiHandler _wasapi;
  29.         private void button1_Click(object sender, EventArgs e)
  30.         {
  31.             var array = (comboBox1.Items[comboBox1.SelectedIndex] as string).Split(' ');
  32.             devindex = Convert.ToInt32(array[0]);
  33.             //MessageBox.Show(devindex + "lol");
  34.             bool result = BassWasapi.BASS_WASAPI_Init(devindex, 0, 0, BASSWASAPIInit.BASS_WASAPI_BUFFER, 1f, 0.05f, wasapiProcess, IntPtr.Zero);
  35.            
  36.             BassWasapi.BASS_WASAPI_Start();
  37.             System.Threading.Thread.Sleep(500);
  38.             timer1.Enabled = true;
  39.             /*
  40.             //BassWasapiHandler lol = new BassWasapiHandler(devindex, false, 48000, 2, 0f, 0f);
  41.            
  42.             BassWasapiHandler _wasapi = new BassWasapiHandler(devindex, false, 48000, 2, 0f, 0f);
  43.             int stream = Bass.BASS_StreamCreateFile("C:\test.mp3", 0, 0,
  44.                   BASSFlag.BASS_STREAM_DECODE | BASSFlag.BASS_SAMPLE_FLOAT);
  45.             if (stream != 0)
  46.             {
  47.                 // assign WASAPI output in shared-mode
  48.                 _wasapi = new BassWasapiHandler(-1, false, 48000, 2, 0f, 0f);
  49.                 // add the source channel
  50.                 _wasapi.AddOutputSource(stream, BASSFlag.BASS_DEFAULT);
  51.                 // init and start WASAPI
  52.                 _wasapi.Init();
  53.                 _wasapi.Start();
  54.             }*/
  55.         }
  56.  
  57.  
  58.         private void timer1_Tick(object sender, EventArgs e)
  59.         {
  60.  
  61.             _spectrumdata.Clear();
  62.             int ret = BassWasapi.BASS_WASAPI_GetData(fft, (int)BASSData.BASS_DATA_FFT2048);
  63.             Console.WriteLine(fft[1024 * 16500 / 44100]);
  64.             if (ret < -1) return;
  65.             int x, y;
  66.             int b0 = 0;
  67.            
  68.  
  69.             for (x = 0; x < _lines; x++)
  70.             {
  71.                 float peak = 0;
  72.                 int b1 = (int)Math.Pow(2, x * 10.0 / (_lines - 1));
  73.                 if (b1 > 1023) b1 = 1023;
  74.                 if (b1 <= b0) b1 = b0 + 1;
  75.                 for (; b0 < b1; b0++)
  76.                 {
  77.                     if (peak < fft[1 + b0]) peak = fft[1 + b0];
  78.                 }
  79.                 y = (int)(Math.Sqrt(peak) * 3 * 255 - 4);
  80.                 if (y > 255) y = 255;
  81.                 if (y < 0) y = 0;
  82.                 _spectrumdata.Add((byte)y);
  83.             }
  84.             Console.Clear();
  85.             foreach(byte data in _spectrumdata)
  86.             {
  87.                 Console.Write("[");
  88.                 for(int i = 0; i < data; i += 4)
  89.                 {
  90.                     Console.Write("=");
  91.                 }
  92.                 Console.Write("]\n");
  93.             }
  94.         }
  95.  
  96.         private void Form1_Load(object sender, EventArgs e)
  97.         {
  98.             for (int i = 0; i < BassWasapi.BASS_WASAPI_GetDeviceCount(); i++)
  99.             {
  100.                 var device = BassWasapi.BASS_WASAPI_GetDeviceInfo(i);
  101.                 if (device.IsEnabled && device.IsLoopback)
  102.                 {
  103.                     comboBox1.Items.Add(string.Format("{0} - {1}", i, device.name));
  104.                 }
  105.             }
  106.             comboBox1.SelectedIndex = 0;
  107.             Bass.BASS_SetConfig(BASSConfig.BASS_CONFIG_UPDATETHREADS, false);
  108.             Bass.BASS_Init(0, 44100, BASSInit.BASS_DEVICE_DEFAULT, IntPtr.Zero);
  109.             wasapiProcess = new WASAPIPROC(wasapiProcessHack);
  110.         }
  111.        
  112.         private int wasapiProcessHack(IntPtr buffer, int length, IntPtr user)
  113.         {
  114.             return length;
  115.         }
  116.  
  117.         private void button2_Click(object sender, EventArgs e)
  118.         {
  119.             _wasapi.Stop();
  120.         }
  121.     }
  122. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement