Skip to content

Commit d757b66

Browse files
committed
add NAudio WAV reading demo as a test
#21
1 parent 38e5bc4 commit d757b66

File tree

3 files changed

+44
-0
lines changed

3 files changed

+44
-0
lines changed

data/asehgal-original.wav

3.05 MB
Binary file not shown.

src/Spectrogram.Tests/Spectrogram.Tests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
<ItemGroup>
1010
<PackageReference Include="MP3Sharp" Version="1.0.5" />
11+
<PackageReference Include="NAudio" Version="1.10.0" />
1112
<PackageReference Include="nunit" Version="3.12.0" />
1213
<PackageReference Include="NUnit3TestAdapter" Version="3.15.1" />
1314
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.4.0" />
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
using NAudio.Wave;
2+
using NUnit.Framework;
3+
using System;
4+
using System.Collections.Generic;
5+
using System.Linq;
6+
using System.Text;
7+
8+
namespace Spectrogram.Tests
9+
{
10+
class WavUsingLibrary
11+
{
12+
[Test]
13+
public void Test_WavFile_ReadASehgal()
14+
{
15+
// READ THE WAV FILE WITH NAUDIO
16+
double[] audio;
17+
int sampleRate;
18+
string wavFilePath = "../../../../../data/asehgal-original.wav";
19+
20+
using (var audioFileReader = new AudioFileReader(wavFilePath))
21+
{
22+
sampleRate = audioFileReader.WaveFormat.SampleRate;
23+
var wholeFile = new List<float>((int)(audioFileReader.Length / 4));
24+
var readBuffer = new float[audioFileReader.WaveFormat.SampleRate * audioFileReader.WaveFormat.Channels];
25+
int samplesRead = 0;
26+
while ((samplesRead = audioFileReader.Read(readBuffer, 0, readBuffer.Length)) > 0)
27+
wholeFile.AddRange(readBuffer.Take(samplesRead));
28+
audio = Array.ConvertAll(wholeFile.ToArray(), x => (double)x);
29+
}
30+
31+
// TEST VALUES ARE WHAT WE EXPECT
32+
double lengthSec = (double)audio.Length / sampleRate;
33+
Assert.AreEqual(40_000, sampleRate);
34+
Assert.AreEqual(40, lengthSec, .01);
35+
36+
// CREATE THE SPECTROGRAM
37+
int fftSize = 8192;
38+
var spec = new Spectrogram(sampleRate, fftSize, stepSize: 4_000, maxFreq: 2_000);
39+
spec.Add(audio);
40+
spec.SaveImage("asehgal.png", intensity: 10_000, dB: true);
41+
}
42+
}
43+
}

0 commit comments

Comments
 (0)