Here's the first way I figured out how to do it with NAudio.
Output
>SoundToAmplitudes.exe w:\materials\audio\one_pos_to_neg_crossing.wav
0.04284668
-0.005615234
-0.1177368
Code
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using NAudio.Wave;
namespace SoundToAmplitudes {
class Program {
private static int Main(string[] args) {
#if DEBUG
Console.WriteLine(String.Join(", ", args));
args = new[] { @"W:\materials\audio\one_pos_to_neg_crossing.wav" };
#endif
return Cli(args);
}
static int Cli(string[] args) {
string fileName = args[0];
var soundFile = new FileInfo(fileName);
foreach (float s in AmplitudesFromFile(soundFile)) {
Console.WriteLine(s);
}
//Console.WriteLine();
#if DEBUG
Console.Read();
#endif
return 0;
}
public static IEnumerable<float> AmplitudesFromFile(FileInfo soundFile) {
var reader = new AudioFileReader(soundFile.FullName);
int count = 4096; // arbitrary
float[] buffer = new float[count];
int offset = 0;
int numRead = 0;
while ((numRead = reader.Read(buffer, offset, count)) > 0) {
foreach (float amp in buffer.Take(numRead)) {
yield return amp;
}
}
}
}
}