From 0cfd7f73c54b1d9fc6d09db13f7976c12dd9da7a Mon Sep 17 00:00:00 2001 From: Elias Stepanik <40958815+eliasstepanik@users.noreply.github.com> Date: Sat, 18 Sep 2021 18:22:18 +0200 Subject: [PATCH] Add files via upload --- Dockerfile | 18 +++ Program.cs | 108 ++++++++++++++++-- SliderSet.cs | 13 ++- Sliders.cs | 16 ++- VoicemeeterSliderControl.csproj | 22 ++-- VoicemeeterSliderControl.sln | 32 +++--- VoicemeeterSliderControl.sln.DotSettings.user | 4 +- 7 files changed, 162 insertions(+), 51 deletions(-) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..3154a3b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,18 @@ +FROM mcr.microsoft.com/dotnet/runtime:5.0 AS base +WORKDIR /app + +FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build +WORKDIR /src +COPY ["VoicemeeterSliderControl.csproj", "./"] +RUN dotnet restore "VoicemeeterSliderControl.csproj" +COPY . . +WORKDIR "/src/" +RUN dotnet build "VoicemeeterSliderControl.csproj" -c Release -o /app/build + +FROM build AS publish +RUN dotnet publish "VoicemeeterSliderControl.csproj" -c Release -o /app/publish + +FROM base AS final +WORKDIR /app +COPY --from=publish /app/publish . +ENTRYPOINT ["dotnet", "VoicemeeterSliderControl.dll"] diff --git a/Program.cs b/Program.cs index 30821d7..64253e5 100644 --- a/Program.cs +++ b/Program.cs @@ -1,12 +1,96 @@ -using System; - -namespace VoicemeeterSliderControl -{ - class Program - { - static void Main(string[] args) - { - Console.WriteLine("Hello World!"); - } - } -} +using System; +using System.Collections.Generic; +using System.IO; +using System.IO.Ports; +using System.Text.Json; +using System.Threading; +using System.Threading.Tasks; + +namespace VoicemeeterSliderControl +{ + class Program + { + static SerialPort _serialPort; + static async Task Main(string[] args) + { + string fileName = "Config.json"; + string jsonString = File.ReadAllText(fileName); + Sliders sliders = JsonSerializer.Deserialize(jsonString); + + _serialPort = new SerialPort(); + _serialPort.PortName = sliders.PortName; + _serialPort.BaudRate = sliders.BaudRate; + _serialPort.Open(); + + /*Sliders slider = new Sliders() + { + SliderSets = new List() + { + new SliderSet() + { + Slider = 0, + VoicemeeterValue = "Strip[0].Gain" + }, + new SliderSet() + { + Slider = 1, + VoicemeeterValue = "Strip[1].Gain" + } + } + }; + string fileNameSave = "Slider.json"; + using FileStream createStream = File.Create(fileNameSave); + + var options = new JsonSerializerOptions { WriteIndented = true }; + await JsonSerializer.SerializeAsync(createStream, slider); + await createStream.DisposeAsync();*/ + + using (var _ = await VoiceMeeter.Remote.Initialize(Voicemeeter.RunVoicemeeterParam.VoicemeeterPotato).ConfigureAwait(false)) + { + int startSkip = 0; + while (true) + { + string rawInput = _serialPort.ReadLine(); + + if (startSkip++ < 30) + continue; + if(rawInput.Equals(string.Empty)) + return; + + List valuesFloat = ParseValuesFloat(rawInput); + + foreach (var slidersSlider in sliders.SliderSets) + { + var parameter = slidersSlider.VoicemeeterValue; + float setValue = map(valuesFloat[slidersSlider.Slider], 0f, 100f, -60f, 12f); + VoiceMeeter.Remote.SetParameter(parameter, setValue); + } + + + + } + + } + } + + public static List ParseValuesFloat(string input) + { + List floats = new List(); + + string[] valueStrings = input.Split("|"); + valueStrings[10] = valueStrings[10].Replace("\r", ""); + + foreach (var value in valueStrings) + { + if(!value.Contains("|") && !value.Equals(" ") && !value.Equals(String.Empty)) + floats.Add(map(int.Parse(value), 0, 1024, 0f, 100f)); + } + + return floats; + } + + public static float map (float value, float from1, float to1, float from2, float to2) { + return (value - from1) / (to1 - from1) * (to2 - from2) + from2; + } + } +} \ No newline at end of file diff --git a/SliderSet.cs b/SliderSet.cs index dad6c38..35aa111 100644 --- a/SliderSet.cs +++ b/SliderSet.cs @@ -1,7 +1,8 @@ -namespace VoicemeeterSliderControl -{ - public class SliderSet - { - - } +namespace VoicemeeterSliderControl +{ + public class SliderSet + { + public int Slider { get; set; } + public string VoicemeeterValue { get; set; } + } } \ No newline at end of file diff --git a/Sliders.cs b/Sliders.cs index bc54737..cbc45c9 100644 --- a/Sliders.cs +++ b/Sliders.cs @@ -1,7 +1,11 @@ -namespace VoicemeeterSliderControl -{ - public class Sliders - { - + - } +using System.Collections.Generic; + +namespace VoicemeeterSliderControl +{ + public class Sliders + { + public string PortName { get; set; } + public int BaudRate { get; set; } + public IList SliderSets { get; set; } + } } \ No newline at end of file diff --git a/VoicemeeterSliderControl.csproj b/VoicemeeterSliderControl.csproj index 9590466..d6e1773 100644 --- a/VoicemeeterSliderControl.csproj +++ b/VoicemeeterSliderControl.csproj @@ -1,8 +1,14 @@ - - - - Exe - net5.0 - - - + + + + Exe + net5.0 + Windows + + + + + + + + diff --git a/VoicemeeterSliderControl.sln b/VoicemeeterSliderControl.sln index 9c3c86e..2186e30 100644 --- a/VoicemeeterSliderControl.sln +++ b/VoicemeeterSliderControl.sln @@ -1,16 +1,16 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VoicemeeterSliderControl", "VoicemeeterSliderControl.csproj", "{21650B59-0EEF-46AB-8663-DB1162392300}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {21650B59-0EEF-46AB-8663-DB1162392300}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {21650B59-0EEF-46AB-8663-DB1162392300}.Debug|Any CPU.Build.0 = Debug|Any CPU - {21650B59-0EEF-46AB-8663-DB1162392300}.Release|Any CPU.ActiveCfg = Release|Any CPU - {21650B59-0EEF-46AB-8663-DB1162392300}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VoicemeeterSliderControl", "VoicemeeterSliderControl.csproj", "{21650B59-0EEF-46AB-8663-DB1162392300}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {21650B59-0EEF-46AB-8663-DB1162392300}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {21650B59-0EEF-46AB-8663-DB1162392300}.Debug|Any CPU.Build.0 = Debug|Any CPU + {21650B59-0EEF-46AB-8663-DB1162392300}.Release|Any CPU.ActiveCfg = Release|Any CPU + {21650B59-0EEF-46AB-8663-DB1162392300}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/VoicemeeterSliderControl.sln.DotSettings.user b/VoicemeeterSliderControl.sln.DotSettings.user index 3f72a84..fa2fe2e 100644 --- a/VoicemeeterSliderControl.sln.DotSettings.user +++ b/VoicemeeterSliderControl.sln.DotSettings.user @@ -1,4 +1,2 @@  - <AssemblyExplorer> - <Assembly Path="C:\Program Files (x86)\VB\Voicemeeter\VoicemeeterRemote64.dll" /> -</AssemblyExplorer> \ No newline at end of file + <AssemblyExplorer /> \ No newline at end of file