Initial commit — WPF guitar note name tutor using FFT frequency detection
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
using System;
|
||||
|
||||
namespace SoundAnalysis
|
||||
{
|
||||
/// <summary>
|
||||
/// Complex number.
|
||||
/// </summary>
|
||||
struct ComplexNumber
|
||||
{
|
||||
public double Re;
|
||||
public double Im;
|
||||
|
||||
public ComplexNumber(double re)
|
||||
{
|
||||
Re = re;
|
||||
Im = 0;
|
||||
}
|
||||
|
||||
public ComplexNumber(double re, double im)
|
||||
{
|
||||
Re = re;
|
||||
Im = im;
|
||||
}
|
||||
|
||||
public static ComplexNumber operator *(ComplexNumber n1, ComplexNumber n2)
|
||||
{
|
||||
return new ComplexNumber(n1.Re * n2.Re - n1.Im * n2.Im,
|
||||
n1.Im * n2.Re + n1.Re * n2.Im);
|
||||
}
|
||||
|
||||
public static ComplexNumber operator +(ComplexNumber n1, ComplexNumber n2)
|
||||
{
|
||||
return new ComplexNumber(n1.Re + n2.Re, n1.Im + n2.Im);
|
||||
}
|
||||
|
||||
public static ComplexNumber operator -(ComplexNumber n1, ComplexNumber n2)
|
||||
{
|
||||
return new ComplexNumber(n1.Re - n2.Re, n1.Im - n2.Im);
|
||||
}
|
||||
|
||||
public static ComplexNumber operator -(ComplexNumber n)
|
||||
{
|
||||
return new ComplexNumber(-n.Re, -n.Im);
|
||||
}
|
||||
|
||||
public static implicit operator ComplexNumber(double n)
|
||||
{
|
||||
return new ComplexNumber(n, 0);
|
||||
}
|
||||
|
||||
public ComplexNumber PoweredE()
|
||||
{
|
||||
double e = Math.Exp(Re);
|
||||
return new ComplexNumber(e * Math.Cos(Im), e * Math.Sin(Im));
|
||||
}
|
||||
|
||||
public double Power2()
|
||||
{
|
||||
return Re * Re - Im * Im;
|
||||
}
|
||||
|
||||
public double AbsPower2()
|
||||
{
|
||||
return Re * Re + Im * Im;
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return String.Format("{0}+i*{1}", Re, Im);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user