diff options
Diffstat (limited to 'AudioTester')
-rw-r--r-- | AudioTester/AudioTester.csproj | 2 | ||||
-rw-r--r-- | AudioTester/Core/RenderStreamer.cs | 32 | ||||
-rw-r--r-- | AudioTester/Program.cs | 88 | ||||
-rw-r--r-- | AudioTester/RayRoomSettings.cs | 3 |
4 files changed, 66 insertions, 59 deletions
diff --git a/AudioTester/AudioTester.csproj b/AudioTester/AudioTester.csproj index fc07b92..5549d83 100644 --- a/AudioTester/AudioTester.csproj +++ b/AudioTester/AudioTester.csproj @@ -9,7 +9,6 @@ <ItemGroup> <PackageReference Include="NAudio" Version="2.2.1" /> - <PackageReference Include="System.Drawing.Common" Version="7.0.0" /> </ItemGroup> <ItemGroup> <Content Include="Resources\*"> @@ -20,6 +19,7 @@ <None Remove="Resources\test.wav" /> </ItemGroup> <ItemGroup> + <ProjectReference Include="..\RayRoom.NAudio\RayRoom.NAudioEngine.csproj" /> <ProjectReference Include="..\RayRoom\RayRoom.csproj" /> </ItemGroup> </Project> diff --git a/AudioTester/Core/RenderStreamer.cs b/AudioTester/Core/RenderStreamer.cs index c7d2595..81be958 100644 --- a/AudioTester/Core/RenderStreamer.cs +++ b/AudioTester/Core/RenderStreamer.cs @@ -1,4 +1,5 @@ using NAudio.Wave; +using RayRoom.Core; namespace AudioTester.Core { @@ -6,37 +7,18 @@ namespace AudioTester.Core { public WaveFormat WaveFormat { get; } - private const int ReadBufferSize = 1024; - private int sample; - private Random rand; + private ISampleHandler provider; - private AudioFileReader streamReader; - private ISampleProvider provider; - - public RenderStreamer() + public RenderStreamer(ISampleHandler provider) { - rand = new Random(); - WaveFormat = WaveFormat.CreateIeeeFloatWaveFormat(44100, 2); - sample = 0; - - streamReader = new AudioFileReader(@"Resources\test.wav"); - - provider = streamReader.ToSampleProvider(); + this.provider = provider; + + WaveFormat = WaveFormat.CreateIeeeFloatWaveFormat(44100, 1); } public int Read(float[] buffer, int offset, int count) { - int length = provider.Read(buffer, offset, count); - - Console.WriteLine("i: {0}; o:{1}", count, length); - - if (length < count) - { - streamReader.Position = 0; - length += provider.Read(buffer, length, count - length); - } - - return length; + return provider.WriteTo(buffer, offset, count); } } } diff --git a/AudioTester/Program.cs b/AudioTester/Program.cs index 95d6049..c2a3a0b 100644 --- a/AudioTester/Program.cs +++ b/AudioTester/Program.cs @@ -1,47 +1,36 @@ using AudioTester.Core; -using AudioTester.Core.Extensions; +using NAudio.Mixer; using NAudio.Wave; using RayRoom.Core; -using System.Drawing; +using RayRoom.NAudioEngine; using System.Numerics; namespace AudioTester { internal class Program { - private const int width = 1280; - private const int height = 720; - private const float scale = 100; -#pragma warning disable CA1416 // Проверка совместимости платформы + [STAThread] static void Main(string[] args) { - AudioSimulator a = new AudioSimulator(new Settings(44100, 5, 330)); + var settings = new Settings(44100, 100, 330, 100f); + RaySimulator simulator = new RaySimulator(settings); - var array = a.Simulate(Vector2.Zero, 3600); - var bitmap = new Bitmap(width, height); + var sampler = new AudioSampler(@".\Resources\test.wav", true); - Matrix2x2 mat = new(Vector2.UnitX * scale, Vector2.UnitY * -scale); - - Pen foreground = new(Color.FromArgb(20, Color.White), 1); - - using (Graphics g = Graphics.FromImage(bitmap)) + List<ICastObject> structures = new List<ICastObject> { - g.Clear(Color.Black); - - Vector2 offset = new(width / 2, height / 2); - for (int i = 0; i < array.Length; i++) - { - g.DrawLine(foreground, - (array[i].a * mat + offset).GetPoint(), - (array[i].b * mat + offset).GetPoint()); - } - } - - bitmap.Save($"bitmap.png"); -#pragma warning restore CA1416 // Проверка совместимости платформы - return; - var device = new RenderStreamer(); + new AudioSource(new Vector2(0, 9), 10, sampler), + new Line(new Vector2(-2, 10), new Vector2(-2, -10)), + new Line(new Vector2(-1, 8), new Vector2(1, 8)), + new Line(new Vector2(2, 10), new Vector2(2, -10)), + new Line(new Vector2(-2, -10), new Vector2(2, -10)), + new Line(new Vector2(-2, 10), new Vector2(2, 10)), + }; + + var device = new AudioOut(settings); + device.Container = new ResultContainer(0, new AudioSourceCollision[0]); + Vector2 pos = new Vector2(0, 0); using (var wo = new WasapiOut(NAudio.CoreAudioApi.AudioClientShareMode.Shared, 150)) { wo.Init(device); @@ -49,10 +38,45 @@ namespace AudioTester while (wo.PlaybackState == PlaybackState.Playing) { - Thread.Sleep(100); - if (Console.KeyAvailable) - wo.Stop(); + { + 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")); + } + + var left = simulator.Simulate(structures, -Vector2.UnitX * 0.1f + pos, 0, 36); + var right = simulator.Simulate(structures, Vector2.UnitX * 0.1f + pos, 1, 36); + + var container = new ResultContainer(36, left.distances.Concat(right.distances).ToArray()); + + device.Container = container; } } } diff --git a/AudioTester/RayRoomSettings.cs b/AudioTester/RayRoomSettings.cs index 8b05bcd..5c2f25f 100644 --- a/AudioTester/RayRoomSettings.cs +++ b/AudioTester/RayRoomSettings.cs @@ -9,7 +9,8 @@ namespace AudioTester { return new Settings(format.SampleRate, baseSettings.maxRayReflections, - baseSettings.speedOfSound); + baseSettings.speedOfSound, + 5f); } } } |