Witam wszystkich, jest to mój pierwszy post, moje umiejętności programowania uważam za nawet niezaawansowane.
Cały dzień próbuję przerobić projekt znaleziony w internecie tak, abym mógł go spokojnie użyć przy zaprogramowanym w XNA Audio Spectrum Visualizerze, który ma wyciągać wysokości słupków z całego odtwarzanego dźwięku w systemie. Projekt, który znalazłem, przeznaczony jest do aplikacji windowsowych, jest tam gotowy element wykresu do windows form, a klasa, która go wykorzystuje potrzebuje 2 ProgressBary, wykres windowsowki, wykres twórcy tego projektu i jednego ComboBoxa do bodajże wyboru karty dźwiękowej, z której ma być "zgrywane" audio, a ja potrzebuję klasę, której obiekt przy jego tworzeniu będzie pobierał ilość "pasków" i aktualizował po Update() publiczne wartości tychże słupków, ewentualnie jeszcze głośność lewego i prawego kanału (jeszcze tego nie próbowałem zrobić). Przerabiam to cały dzień, najpierw nie umiałem wsadzić referencji do plików .dll, potem analizowałem ten kod, niby coś posklejałem, ale kiedy uruchamiać program to wartości wszystkich słupków wynoszą 0 (tak jakby w ogóle nie były sczytywane z komputera). Mógłby ktoś uświadomić mnie co takiego robię źle?

Niżej zamieszczam link do projektu, który znalazłem w internecie:
http://www.instructables.com/id/Audio-Spectrum-Software-C/

A tutaj mój badziewnie posklejany kod, jeżeli ktoś nie zrozumiał tego co potrzebuję:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Windows.Threading;
using Un4seen.Bass;
using Un4seen.BassWasapi;
using System.Windows.Forms.DataVisualization.Charting;

namespace Visualizer
{
    public class Analyzer
    {
        public float[] _fft;
        public WASAPIPROC _process;
        public List<byte> _spectrumdata = new List<byte>();
        public int _lines;

        public Analyzer(int lines)
        {
            _lines = lines;
            _fft = new float[8192];
            _process = new WASAPIPROC(Process);
            Init();
        }

        private int Process(IntPtr buffer, int length, IntPtr user)
        {
            return length;
        }

        private void Init()
        {
            bool result = false;
            Bass.BASS_SetConfig(BASSConfig.BASS_CONFIG_UPDATETHREADS, false);
            result = Bass.BASS_Init(0, 44100, BASSInit.BASS_DEVICE_DEFAULT, IntPtr.Zero);
            if (!result) throw new Exception("Init Error");

            

            BassWasapi.BASS_WASAPI_Start();
            BassWasapi.BASS_WASAPI_Free();
            Bass.BASS_Free();
            Bass.BASS_Init(0, 44100, BASSInit.BASS_DEVICE_DEFAULT, IntPtr.Zero);
        }


        public void Update()
        {
            int ret = BassWasapi.BASS_WASAPI_GetData(_fft, (int)BASSData.BASS_DATA_FFT8192);  //get ch.annel fft data
            if (ret < -1) return;
            int x, y;
            int b0 = 0;

            //computes the spectrum data, the code is taken from a bass_wasapi sample.
            for (x = 0; x < _lines; x++)
            {
                float peak = 0;
                int b1 = (int)Math.Pow(2, x * 10.0 / (_lines - 1));
                if (b1 > 1023) b1 = 1023;
                if (b1 <= b0) b1 = b0 + 1;
                for (; b0 < b1; b0++)
                {
                    if (peak < _fft[1 + b0]) peak = _fft[1 + b0];
                }
                y = (int)(Math.Sqrt(peak) * 3 * 255 - 4);
                if (y > 255) y = 255;
                if (y < 0) y = 0;
                _spectrumdata.Add((byte)y);
                //Console.Write("{0, 3} ", y);
            }
            
        }


    }
    
}