Improve code structure

This commit is contained in:
Stone-Red-Code
2022-02-17 20:16:39 +01:00
parent 7c33291ac3
commit 92820f6e8d
3 changed files with 31 additions and 42 deletions
+18 -22
View File
@@ -1,12 +1,7 @@
using NAudio.Wave; using NAudio.Wave;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
namespace AudioVisualizer namespace AudioVisualizer
@@ -19,8 +14,8 @@ namespace AudioVisualizer
} }
private IWaveIn waveIn; private IWaveIn waveIn;
private static int fftLength = 1024; // Has to be powers of two! private static readonly int fftLength = 1024; // Has to be powers of two!
private SampleAggregator sampleAggregator = new SampleAggregator(fftLength); private readonly SampleAggregator sampleAggregator = new SampleAggregator(fftLength);
private void MainForm_Load(object sender, EventArgs e) private void MainForm_Load(object sender, EventArgs e)
{ {
@@ -47,8 +42,6 @@ namespace AudioVisualizer
chart1.Series[0].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Column; chart1.Series[0].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Column;
chart1.Series[0]["PointWidth"] = "1"; chart1.Series[0]["PointWidth"] = "1";
//Set waveIn to WasapiLoopbackCapture to capture the system Audio //Set waveIn to WasapiLoopbackCapture to capture the system Audio
waveIn = new WasapiLoopbackCapture(); waveIn = new WasapiLoopbackCapture();
@@ -57,16 +50,14 @@ namespace AudioVisualizer
waveIn.StartRecording(); waveIn.StartRecording();
} }
private void OnDataAvailable(object sender, WaveInEventArgs e)
void OnDataAvailable(object sender, WaveInEventArgs e)
{ {
if (this.InvokeRequired) if (InvokeRequired)
{ {
this.BeginInvoke(new EventHandler<WaveInEventArgs>(OnDataAvailable), sender, e); BeginInvoke(new EventHandler<WaveInEventArgs>(OnDataAvailable), sender, e);
} }
else else
{ {
byte[] buffer = e.Buffer; byte[] buffer = e.Buffer;
int bytesRecorded = e.BytesRecorded; int bytesRecorded = e.BytesRecorded;
int bufferIncrement = waveIn.WaveFormat.BlockAlign; int bufferIncrement = waveIn.WaveFormat.BlockAlign;
@@ -79,9 +70,9 @@ namespace AudioVisualizer
} }
} }
List<double> lastFft = new List<double>(); private List<double> lastFft = new List<double>();
void FftCalculated(object sender, FftEventArgs e) private void FftCalculated(object sender, FftEventArgs e)
{ {
List<double> fft = new List<double>(); List<double> fft = new List<double>();
@@ -100,7 +91,7 @@ namespace AudioVisualizer
//Dampening the fft //Dampening the fft
for (int i = 0; i < fft.Count; i++) for (int i = 0; i < fft.Count; i++)
{ {
if(fft[i] > lastFft[i] || bufferValueNumericUpDown.Value == 0) if (fft[i] > lastFft[i] || bufferValueNumericUpDown.Value == 0)
{ {
fft[i] = (fft[i] + lastFft[i]) / 2; fft[i] = (fft[i] + lastFft[i]) / 2;
} }
@@ -114,7 +105,7 @@ namespace AudioVisualizer
int barCount = (int)barCountNumericUpDown.Value; int barCount = (int)barCountNumericUpDown.Value;
List<double> scaledFft = new List<double>(); List<double> scaledFft = new List<double>();
//Calculate voulume of bars //Calculate volume of bars
if (barCount > 0) if (barCount > 0)
{ {
int count = fft.Count / barCount; int count = fft.Count / barCount;
@@ -136,6 +127,7 @@ namespace AudioVisualizer
} }
#region flatten #region flatten
int flattenValue = (int)flattenValueNumericUpDown.Value; int flattenValue = (int)flattenValueNumericUpDown.Value;
//flatten the values //flatten the values
@@ -147,7 +139,9 @@ namespace AudioVisualizer
for (int j = 0; j < flattenValue; j++) for (int j = 0; j < flattenValue; j++)
{ {
if (i + j < scaledFft.Count) if (i + j < scaledFft.Count)
{
temp += scaledFft[i + j]; temp += scaledFft[i + j];
}
} }
scaledFft[i] = temp / flattenValue; scaledFft[i] = temp / flattenValue;
} }
@@ -161,15 +155,17 @@ namespace AudioVisualizer
for (int j = 0; j < flattenValue; j++) for (int j = 0; j < flattenValue; j++)
{ {
if (i - j >= 0) if (i - j >= 0)
{
temp += scaledFft[i - j]; temp += scaledFft[i - j];
}
} }
scaledFft[i] = temp / flattenValue; scaledFft[i] = temp / flattenValue;
} }
} }
#endregion
#endregion flatten
//Clear and add cuurent data to chart1 //Clear and add current data to chart1
lastFft = fft; lastFft = fft;
chart1.Series[0].Points.Clear(); chart1.Series[0].Points.Clear();
@@ -184,4 +180,4 @@ namespace AudioVisualizer
Application.Exit(); Application.Exit();
} }
} }
} }
+2 -5
View File
@@ -1,18 +1,15 @@
using System; using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms; using System.Windows.Forms;
namespace AudioVisualizer namespace AudioVisualizer
{ {
static class Program internal static class Program
{ {
/// <summary> /// <summary>
/// Der Haupteinstiegspunkt für die Anwendung. /// Der Haupteinstiegspunkt für die Anwendung.
/// </summary> /// </summary>
[STAThread] [STAThread]
static void Main() private static void Main()
{ {
Application.EnableVisualStyles(); Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false); Application.SetCompatibleTextRenderingDefault(false);
+11 -15
View File
@@ -1,10 +1,6 @@
using NAudio.Dsp; using NAudio.Dsp;
using System; using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AudioVisualizer namespace AudioVisualizer
{ {
@@ -12,16 +8,16 @@ namespace AudioVisualizer
*This class is not created by me(Stone_Red) *This class is not created by me(Stone_Red)
*I forgot who mad this class if i find the source of this class i will credit the original creator *I forgot who mad this class if i find the source of this class i will credit the original creator
*/ */
class SampleAggregator internal class SampleAggregator
{ {
// FFT // FFT
public event EventHandler<FftEventArgs> FftCalculated; public event EventHandler<FftEventArgs> FftCalculated;
public bool PerformFFT { get; set; } public bool PerformFFT { get; set; }
private Complex[] fftBuffer; private readonly Complex[] fftBuffer;
private FftEventArgs fftArgs; private readonly FftEventArgs fftArgs;
private int fftPos; private int fftPos;
private int fftLength; private readonly int fftLength;
private int m; private readonly int m;
public SampleAggregator(int fftLength) public SampleAggregator(int fftLength)
{ {
@@ -29,13 +25,13 @@ namespace AudioVisualizer
{ {
throw new ArgumentException("FFT Length must be a power of two"); throw new ArgumentException("FFT Length must be a power of two");
} }
this.m = (int)Math.Log(fftLength, 2.0); m = (int)Math.Log(fftLength, 2.0);
this.fftLength = fftLength; this.fftLength = fftLength;
this.fftBuffer = new Complex[fftLength]; fftBuffer = new Complex[fftLength];
this.fftArgs = new FftEventArgs(fftBuffer); fftArgs = new FftEventArgs(fftBuffer);
} }
bool IsPowerOfTwo(int x) private bool IsPowerOfTwo(int x)
{ {
return (x & (x - 1)) == 0; return (x & (x - 1)) == 0;
} }
@@ -61,7 +57,7 @@ namespace AudioVisualizer
{ {
public FftEventArgs(Complex[] result) public FftEventArgs(Complex[] result)
{ {
this.Result = result; Result = result;
} }
public Complex[] Result { get; private set; } public Complex[] Result { get; private set; }
} }