using AudioTester.Core; using NAudio.Mixer; using NAudio.Wave; using RayRoom.Core; using RayRoom.NAudioEngine; using System.Numerics; namespace AudioTester { internal class Program { [STAThread] static void Main(string[] args) { var settings = new Settings(44100, 10, 330 / 10, 300f); RaySimulator simulator = new RaySimulator(settings); var sampler = new AudioSampler(@".\Resources\click.wav", true); List structures = new List { new AudioSource(new Vector2(0, 0), 100, sampler), new Line(new Vector2(-30, -10), new Vector2(10, -10)), new Line(new Vector2(10, -10), new Vector2(10, 10)), new Line(new Vector2(10, 10), new Vector2(-30, 10)), new Line(new Vector2(-30, 10), new Vector2(-30, -10)), new Line(new Vector2(-20, 5), new Vector2(-15, 0)), new Line(new Vector2(-15, 0), new Vector2(-10, 2)), new Line(new Vector2(-20, 5), new Vector2(-20, -5)), }; var device = new AudioOut(settings); device.Container = new ResultContainer(0, new AudioSourceCollision[0]); Vector2 pos = new Vector2(-5, -5); using (var wo = new WasapiOut(NAudio.CoreAudioApi.AudioClientShareMode.Shared, 150)) { wo.Init(device); wo.Play(); while (wo.PlaybackState == PlaybackState.Playing) { if (Console.KeyAvailable) { var key = Console.ReadKey(); switch (key.Key) { case ConsoleKey.Q: break; case ConsoleKey.E: break; case ConsoleKey.W: pos += new Vector2(0, 0.1f); break; case ConsoleKey.S: pos += new Vector2(0, -0.1f); break; case ConsoleKey.A: pos += new Vector2(-0.1f, 0); break; case ConsoleKey.D: pos += new Vector2(0.1f, 0); break; case ConsoleKey.Escape: wo.Stop(); break; default: break; } Console.CursorLeft = 0; Console.CursorTop = 0; Console.WriteLine(" {0} ", pos.ToString("0.00")); } // 3x // - // 4 var left = simulator.Simulate(structures, -Vector2.UnitX * 0.001f + pos, (7 * MathF.PI) / 8, MathF.PI / 4, 0, 360 * 2); var right = simulator.Simulate(structures, Vector2.UnitX * 0.001f + pos, MathF.PI / 4, -MathF.PI / 4, 1, 360 * 2); var container = new ResultContainer(36, left.distances.Concat(right.distances).ToArray()); device.Container = container; } } } } }