using System;
using System.Threading;
using OpenTK.Audio;
using OpenTK.Audio.OpenAL;
class AlTest
{
static void Main(string[] args)
{
if (args.Length < 1)
{
Console.WriteLine("usage: altest <file.wav> [gain 0..1]");
return;
}
float gain = args.Length > 1 ? float.Parse(args[1]) : 1.0f;
var ctx = new AudioContext();
ctx.MakeCurrent();
Console.WriteLine("device: " + AudioContext.CurrentContext.CurrentDevice);
WavFile w = WavFile.Load(args[0]);
Console.WriteLine("{0} {1} Hz {2} bytes", w.Format, w.SampleRate, w.Data.Length);
int buf = AL.GenBuffer();
AL.BufferData(buf, w.Format, w.Data, w.Data.Length, w.SampleRate);
int src = AL.GenSource();
AL.Source(src, ALSourcei.Buffer, buf);
AL.Source(src, ALSourcef.Gain, gain);
AL.SourcePlay(src);
ALError e = AL.GetError();
if (e != ALError.NoError) Console.WriteLine("AL error: " + AL.GetErrorString(e));
while (AL.GetSourceState(src) == ALSourceState.Playing)
Thread.Sleep(50);
AL.DeleteSource(src);
AL.DeleteBuffer(buf);
ctx.Dispose();
}
}