aboutsummaryrefslogtreecommitdiff
path: root/AudioTester
diff options
context:
space:
mode:
authorbonmas14 <bonmas14@gmail.com>2023-10-29 21:03:26 +0300
committerbonmas14 <bonmas14@gmail.com>2023-10-29 21:03:26 +0300
commit79d8da74ac98166ec9e9dae7eff820cd9842edb3 (patch)
treebc359f214122236968f853e6aed7236a9e4905f9 /AudioTester
parent0ee008ae77fb76cbe9fe151cc6c4bc9f89cb98a5 (diff)
downloadRayRoom-79d8da74ac98166ec9e9dae7eff820cd9842edb3.tar.gz
RayRoom-79d8da74ac98166ec9e9dae7eff820cd9842edb3.zip
basic functionality
+ compute bound
Diffstat (limited to 'AudioTester')
-rw-r--r--AudioTester/AudioTester.csproj2
-rw-r--r--AudioTester/Core/RenderStreamer.cs32
-rw-r--r--AudioTester/Program.cs88
-rw-r--r--AudioTester/RayRoomSettings.cs3
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);
}
}
}